summaryrefslogtreecommitdiffstats
path: root/src/compiler_test.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler_test.h')
-rw-r--r--src/compiler_test.h1041
1 files changed, 0 insertions, 1041 deletions
diff --git a/src/compiler_test.h b/src/compiler_test.h
deleted file mode 100644
index 9df88a0..0000000
--- a/src/compiler_test.h
+++ /dev/null
@@ -1,1041 +0,0 @@
-// Copyright 2011 Google Inc. All Rights Reserved.
-
-#include <dirent.h>
-#include <dlfcn.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-
-#include "base64.h"
-#include "heap.h"
-#include "thread.h"
-#include "stringprintf.h"
-#include "class_linker.h"
-#include "dex_file.h"
-
-#include "unicode/uclean.h"
-#include "unicode/uvernum.h"
-
-#include "gtest/gtest.h"
-
-namespace art {
-
-//class IntMath {
-//
-// public static boolean mBoolean1, mBoolean2;
-// public static byte mByte1, mByte2;
-// public static char mChar1, mChar2;
-// public static short mShort1, mShort2;
-// public static int mInt1, mInt2;
-// public static float mFloat1, mFloat2;
-// public static long mLong1, mLong2;
-// public static double mDouble1, mDouble2;
-// public static volatile long mVolatileLong1, mVolatileLong2;
-//
-//
-// private int foo_;
-//
-// public IntMath(int stuff) {
-// foo_ = stuff;
-// }
-//
-// public IntMath() {
-// foo_ = 123;
-// }
-//
-// static int staticFieldTest(int x) {
-// mBoolean1 = true;
-// mBoolean2 = false;
-// mByte1 = 127;
-// mByte2 = -128;
-// mChar1 = 32767;
-// mChar2 = 65535;
-// mShort1 = 32767;
-// mShort2 = -32768;
-// mInt1 = 65537;
-// mInt2 = -65537;
-// mFloat1 = 3.1415f;
-// mFloat2 = -1.0f / 0.0f; // -inf
-// mLong1 = 1234605616436508552L; // 0x1122334455667788
-// mLong2 = -1234605616436508552L;
-// mDouble1 = 3.1415926535;
-// mDouble2 = 1.0 / 0.0; // +inf
-// mVolatileLong1 = mLong1 - 1;
-// mVolatileLong2 = mLong2 + 1;
-//
-// if (!mBoolean1) { return 10; }
-// if (mBoolean2) { return 11; }
-// if (mByte1 != 127) { return 12; }
-// if (mByte2 != -128) { return 13; }
-// if (mChar1 != 32767) { return 14; }
-// if (mChar2 != 65535) { return 15; }
-// if (mShort1 != 32767) { return 16; }
-// if (mShort2 != -32768) { return 17; }
-// if (mInt1 != 65537) { return 18; }
-// if (mInt2 != -65537) { return 19; }
-// if (!(mFloat1 > 3.141f && mFloat1 < 3.142f)) { return 20; }
-// if (mFloat2 >= mFloat1) { return 21; }
-// if (mLong1 != 1234605616436508552L) { return 22; }
-// if (mLong2 != -1234605616436508552L) { return 23; }
-// if (!(mDouble1 > 3.141592653 && mDouble1 < 3.141592654)) { return 24; }
-// if (mDouble2 <= mDouble1) { return 25; }
-// if (mVolatileLong1 != 1234605616436508551L) { return 26; }
-// if (mVolatileLong2 != -1234605616436508551L) { return 27; }
-//
-// return 1000 + x;
-// }
-//
-// /*
-// * Try to cause some unary operations.
-// */
-// static int unopTest(int x) {
-// x = -x;
-// x ^= 0xffffffff;
-// return x;
-// }
-//
-// static int shiftTest1() {
-// final int[] mBytes = {
-// 0x11, 0x22, 0x33, 0x44, 0x88, 0x99, 0xaa, 0xbb
-// };
-// long l;
-// int i1, i2;
-//
-// if (mBytes[0] != 0x11) return 20;
-// if (mBytes[1] != 0x22) return 21;
-// if (mBytes[2] != 0x33) return 22;
-// if (mBytes[3] != 0x44) return 23;
-// if (mBytes[4] != 0x88) return 24;
-// if (mBytes[5] != 0x99) return 25;
-// if (mBytes[6] != 0xaa) return 26;
-// if (mBytes[7] != 0xbb) return 27;
-//
-// i1 = mBytes[0] | mBytes[1] << 8 | mBytes[2] << 16 | mBytes[3] << 24;
-// i2 = mBytes[4] | mBytes[5] << 8 | mBytes[6] << 16 | mBytes[7] << 24;
-// l = i1 | ((long)i2 << 32);
-//
-// if (i1 != 0x44332211) { return 0x80000000 | i1; }
-// if (i2 != 0xbbaa9988) { return 2; }
-// if (l != 0xbbaa998844332211L) { return 3; }
-//
-// l = (long)mBytes[0]
-// | (long)mBytes[1] << 8
-// | (long)mBytes[2] << 16
-// | (long)mBytes[3] << 24
-// | (long)mBytes[4] << 32
-// | (long)mBytes[5] << 40
-// | (long)mBytes[6] << 48
-// | (long)mBytes[7] << 56;
-//
-// if (l != 0xbbaa998844332211L) { return 4; }
-// return 0;
-// }
-//
-// static int shiftTest2() {
-//
-// long a = 0x11;
-// long b = 0x22;
-// long c = 0x33;
-// long d = 0x44;
-// long e = 0x55;
-// long f = 0x66;
-// long g = 0x77;
-// long h = 0x88;
-//
-// long result = ((a << 56) | (b << 48) | (c << 40) | (d << 32) |
-// (e << 24) | (f << 16) | (g << 8) | h);
-//
-// if (result != 0x1122334455667788L) { return 1; }
-// return 0;
-// }
-//
-// static int unsignedShiftTest() {
-// byte b = -4;
-// short s = -4;
-// char c = 0xfffc;
-// int i = -4;
-//
-// b >>>= 4;
-// s >>>= 4;
-// c >>>= 4;
-// i >>>= 4;
-//
-// if ((int) b != -1) { return 1; }
-// if ((int) s != -1) { return 2; }
-// if ((int) c != 0x0fff) { return 3; }
-// if (i != 268435455) { return 4; }
-// return 0;
-// }
-//
-// static int convTest() {
-//
-// float f;
-// double d;
-// int i;
-// long l;
-//
-// /* int --> long */
-// i = 7654;
-// l = (long) i;
-// if (l != 7654L) { return 1; }
-//
-// i = -7654;
-// l = (long) i;
-// if (l != -7654L) { return 2; }
-//
-// /* long --> int (with truncation) */
-// l = 5678956789L;
-// i = (int) l;
-// if (i != 1383989493) { return 3; }
-//
-// l = -5678956789L;
-// i = (int) l;
-// if (i != -1383989493) { return 4; }
-// return 0;
-// }
-//
-// static int charSubTest() {
-//
-// char char1 = 0x00e9;
-// char char2 = 0xffff;
-// int i;
-//
-// /* chars are unsigned-expanded to ints before subtraction */
-// i = char1 - char2;
-// if (i != 0xffff00ea) { return 1; }
-// return 0;
-// }
-//
-// /*
-// * We pass in the arguments and return the results so the compiler
-// * doesn't do the math for us. (x=70000, y=-3)
-// */
-// static int intOperTest(int x, int y) {
-// int[] results = new int[10];
-//
-// /* this seems to generate "op-int" instructions */
-// results[0] = x + y;
-// results[1] = x - y;
-// results[2] = x * y;
-// results[3] = x * x;
-// results[4] = x / y;
-// results[5] = x % -y;
-// results[6] = x & y;
-// results[7] = x | y;
-// results[8] = x ^ y;
-//
-// /* this seems to generate "op-int/2addr" instructions */
-// results[9] = x + ((((((((x + y) - y) * y) / y) % y) & y) | y) ^ y);
-//
-// /* check this edge case while we're here (div-int/2addr) */
-// int minInt = -2147483648;
-// int negOne = -results[5];
-// int plusOne = 1;
-// int result = (((minInt + plusOne) - plusOne) / negOne) / negOne;
-//
-// if (result != minInt) { return 1;};
-// if (results[0] != 69997) { return 2;};
-// if (results[1] != 70003) { return 3;};
-// if (results[2] != -210000) { return 4;};
-// if (results[3] != 605032704) { return 5;};
-// if (results[4] != -23333) { return 6;};
-// if (results[5] != 1) { return 7;};
-// if (results[6] != 70000) { return 8;};
-// if (results[7] != -3) { return 9;};
-// if (results[8] != -70003) { return 10;};
-// if (results[9] != 70000) { return 11;};
-//
-// return 0;
-// }
-//
-// /*
-// * More operations, this time with 16-bit constants. (x=77777)
-// */
-// static int lit16Test(int x) {
-//
-// int[] results = new int[8];
-//
-// /* try to generate op-int/lit16" instructions */
-// results[0] = x + 1000;
-// results[1] = 1000 - x;
-// results[2] = x * 1000;
-// results[3] = x / 1000;
-// results[4] = x % 1000;
-// results[5] = x & 1000;
-// results[6] = x | -1000;
-// results[7] = x ^ -1000;
-//
-// if (results[0] != 78777) { return 1; }
-// if (results[1] != -76777) { return 2; }
-// if (results[2] != 77777000) { return 3; }
-// if (results[3] != 77) { return 4; }
-// if (results[4] != 777) { return 5; }
-// if (results[5] != 960) { return 6; }
-// if (results[6] != -39) { return 7; }
-// if (results[7] != -76855) { return 8; }
-// return 0;
-// }
-//
-// /*
-// * More operations, this time with 8-bit constants. (x=-55555)
-// */
-// static int lit8Test(int x) {
-//
-// int[] results = new int[8];
-//
-// /* try to generate op-int/lit8" instructions */
-// results[0] = x + 10;
-// results[1] = 10 - x;
-// results[2] = x * 10;
-// results[3] = x / 10;
-// results[4] = x % 10;
-// results[5] = x & 10;
-// results[6] = x | -10;
-// results[7] = x ^ -10;
-// int minInt = -2147483648;
-// int result = minInt / -1;
-// if (result != minInt) {return 1; }
-// if (results[0] != -55545) {return 2; }
-// if (results[1] != 55565) {return 3; }
-// if (results[2] != -555550) {return 4; }
-// if (results[3] != -5555) {return 5; }
-// if (results[4] != -5) {return 6; }
-// if (results[5] != 8) {return 7; }
-// if (results[6] != -1) {return 8; }
-// if (results[7] != 55563) {return 9; }
-// return 0;
-// }
-//
-//
-// /*
-// * Shift some data. (value=0xff00aa01, dist=8)
-// */
-// static int intShiftTest(int value, int dist) {
-// int results[] = new int[4];
-// results[0] = value << dist;
-// results[1] = value >> dist;
-// results[2] = value >>> dist;
-// results[3] = (((value << dist) >> dist) >>> dist) << dist;
-// if (results[0] != 0x00aa0100) {return 1; }
-// if (results[1] != 0xffff00aa) {return 2; }
-// if (results[2] != 0x00ff00aa) {return 3; }
-// if (results[3] != 0xaa00) {return 4; }
-// return 0;
-// }
-//
-// /*
-// * We pass in the arguments and return the results so the compiler
-// * doesn't do the math for us. (x=70000000000, y=-3)
-// */
-// static int longOperTest(long x, long y) {
-// long[] results = new long[10];
-//
-// /* this seems to generate "op-long" instructions */
-// results[0] = x + y;
-// results[1] = x - y;
-// results[2] = x * y;
-// results[3] = x * x;
-// results[4] = x / y;
-// results[5] = x % -y;
-// results[6] = x & y;
-// results[7] = x | y;
-// results[8] = x ^ y;
-// /* this seems to generate "op-long/2addr" instructions */
-// results[9] = x + ((((((((x + y) - y) * y) / y) % y) & y) | y) ^ y);
-// /* check this edge case while we're here (div-long/2addr) */
-// long minLong = -9223372036854775808L;
-// long negOne = -results[5];
-// long plusOne = 1;
-// long result = (((minLong + plusOne) - plusOne) / negOne) / negOne;
-// if (result != minLong) { return 1; }
-// if (results[0] != 69999999997L) { return 2; }
-// if (results[1] != 70000000003L) { return 3; }
-// if (results[2] != -210000000000L) { return 4; }
-// if (results[3] != -6833923606740729856L) { return 5; } // overflow
-// if (results[4] != -23333333333L) { return 6; }
-// if (results[5] != 1) { return 7; }
-// if (results[6] != 70000000000L) { return 8; }
-// if (results[7] != -3) { return 9; }
-// if (results[8] != -70000000003L) { return 10; }
-// if (results[9] != 70000000000L) { return 11; }
-// if (results.length != 10) { return 12; }
-// return 0;
-// }
-//
-// /*
-// * Shift some data. (value=0xd5aa96deff00aa01, dist=16)
-// */
-// static long longShiftTest(long value, int dist) {
-// long results[] = new long[4];
-// results[0] = value << dist;
-// results[1] = value >> dist;
-// results[2] = value >>> dist;
-// results[3] = (((value << dist) >> dist) >>> dist) << dist;
-// if (results[0] != 0x96deff00aa010000L) { return results[0]; }
-// if (results[1] != 0xffffd5aa96deff00L) { return results[1]; }
-// if (results[2] != 0x0000d5aa96deff00L) { return results[2]; }
-// if (results[3] != 0xffff96deff000000L) { return results[3]; }
-// if (results.length != 4) { return 5; }
-//
-// return results[0]; // test return-long
-// }
-//
-// static int switchTest(int a) {
-// int res = 1234;
-//
-// switch (a) {
-// case -1: res = 1; return res;
-// case 0: res = 2; return res;
-// case 1: /*correct*/ break;
-// case 2: res = 3; return res;
-// case 3: res = 4; return res;
-// case 4: res = 5; return res;
-// default: res = 6; return res;
-// }
-// switch (a) {
-// case 3: res = 7; return res;
-// case 4: res = 8; return res;
-// default: /*correct*/ break;
-// }
-//
-// a = 0x12345678;
-//
-// switch (a) {
-// case 0x12345678: /*correct*/ break;
-// case 0x12345679: res = 9; return res;
-// default: res = 1; return res;
-// }
-// switch (a) {
-// case 57: res = 10; return res;
-// case -6: res = 11; return res;
-// case 0x12345678: /*correct*/ break;
-// case 22: res = 12; return res;
-// case 3: res = 13; return res;
-// default: res = 14; return res;
-// }
-// switch (a) {
-// case -6: res = 15; return res;
-// case 3: res = 16; return res;
-// default: /*correct*/ break;
-// }
-//
-// a = -5;
-// switch (a) {
-// case 12: res = 17; return res;
-// case -5: /*correct*/ break;
-// case 0: res = 18; return res;
-// default: res = 19; return res;
-// }
-//
-// switch (a) {
-// default: /*correct*/ break;
-// }
-// return res;
-// }
-// /*
-// * Test the integer comparisons in various ways.
-// */
-// static int testIntCompare(int minus, int plus, int plus2, int zero) {
-// int res = 1111;
-//
-// if (minus > plus)
-// return 1;
-// if (minus >= plus)
-// return 2;
-// if (plus < minus)
-// return 3;
-// if (plus <= minus)
-// return 4;
-// if (plus == minus)
-// return 5;
-// if (plus != plus2)
-// return 6;
-//
-// /* try a branch-taken */
-// if (plus != minus) {
-// res = res;
-// } else {
-// return 7;
-// }
-//
-// if (minus > 0)
-// return 8;
-// if (minus >= 0)
-// return 9;
-// if (plus < 0)
-// return 10;
-// if (plus <= 0)
-// return 11;
-// if (plus == 0)
-// return 12;
-// if (zero != 0)
-// return 13;
-//
-// if (zero == 0) {
-// res = res;
-// } else {
-// return 14;
-// }
-// return res;
-// }
-//
-// /*
-// * Test cmp-long.
-// *
-// * minus=-5, alsoMinus=0xFFFFFFFF00000009, plus=4, alsoPlus=8
-// */
-// static int testLongCompare(long minus, long alsoMinus, long plus,
-// long alsoPlus) {
-// int res = 2222;
-//
-// if (minus > plus)
-// return 2;
-// if (plus < minus)
-// return 3;
-// if (plus == minus)
-// return 4;
-//
-// if (plus >= plus+1)
-// return 5;
-// if (minus >= minus+1)
-// return 6;
-//
-// /* try a branch-taken */
-// if (plus != minus) {
-// res = res;
-// } else {
-// return 7;
-// }
-//
-// /* compare when high words are equal but low words differ */
-// if (plus > alsoPlus)
-// return 8;
-// if (alsoPlus < plus)
-// return 9;
-// if (alsoPlus == plus)
-// return 10;
-//
-// /* high words are equal, low words have apparently different signs */
-// if (minus < alsoMinus) // bug!
-// return 11;
-// if (alsoMinus > minus)
-// return 12;
-// if (alsoMinus == minus)
-// return 13;
-//
-// return res;
-// }
-//
-// /*
-// * Test cmpl-float and cmpg-float.
-// */
-// static int testFloatCompare(float minus, float plus, float plus2,
-// float nan) {
-//
-// int res = 3333;
-// if (minus > plus)
-// res = 1;
-// if (plus < minus)
-// res = 2;
-// if (plus == minus)
-// res = 3;
-// if (plus != plus2)
-// res = 4;
-//
-// if (plus <= nan)
-// res = 5;
-// if (plus >= nan)
-// res = 6;
-// if (minus <= nan)
-// res = 7;
-// if (minus >= nan)
-// res = 8;
-// if (nan >= plus)
-// res = 9;
-// if (nan <= plus)
-// res = 10;
-//
-// if (nan == nan)
-// res = 1212;
-//
-// return res;
-// }
-//
-// static int testDoubleCompare(double minus, double plus, double plus2,
-// double nan) {
-//
-// int res = 4444;
-//
-// if (minus > plus)
-// return 1;
-// if (plus < minus)
-// return 2;
-// if (plus == minus)
-// return 3;
-// if (plus != plus2)
-// return 4;
-//
-// if (plus <= nan)
-// return 5;
-// if (plus >= nan)
-// return 6;
-// if (minus <= nan)
-// return 7;
-// if (minus >= nan)
-// return 8;
-// if (nan >= plus)
-// return 9;
-// if (nan <= plus)
-// return 10;
-//
-// if (nan == nan)
-// return 11;
-// return res;
-// }
-//
-// static int fibonacci(int n) {
-// if (n == 0) {
-// return 0;
-// } else if (n == 1) {
-// return 1;
-// } else {
-// return fibonacci(n - 1) + fibonacci(n - 2);
-// }
-// }
-//
-///*
-// static void throwNullPointerException() {
-// throw new NullPointerException("first throw");
-// }
-//
-// static int throwAndCatch() {
-// try {
-// throwNullPointerException();
-// return 1;
-// } catch (NullPointerException npe) {
-// return 0;
-// }
-// }
-//*/
-//
-// static int manyArgs(int a0, long a1, int a2, long a3, int a4, long a5,
-// int a6, int a7, double a8, float a9, double a10, short a11, int a12,
-// char a13, int a14, int a15, byte a16, boolean a17, int a18, int a19,
-// long a20, long a21, int a22, int a23, int a24, int a25, int a26)
-// {
-// if (a0 != 0) return 0;
-// if (a1 != 1L) return 1;
-// if (a2 != 2) return 2;
-// if (a3 != 3L) return 3;
-// if (a4 != 4) return 4;
-// if (a5 != 5L) return 5;
-// if (a6 != 6) return 6;
-// if (a7 != 7) return 7;
-// if (a8 != 8.0) return 8;
-// if (a9 != 9.0f) return 9;
-// if (a10 != 10.0) return 10;
-// if (a11 != (short)11) return 11;
-// if (a12 != 12) return 12;
-// if (a13 != (char)13) return 13;
-// if (a14 != 14) return 14;
-// if (a15 != 15) return 15;
-// if (a16 != (byte)-16) return 16;
-// if (a17 != true) return 17;
-// if (a18 != 18) return 18;
-// if (a19 != 19) return 19;
-// if (a20 != 20L) return 20;
-// if (a21 != 21L) return 21;
-// if (a22 != 22) return 22;
-// if (a23 != 23) return 23;
-// if (a24 != 24) return 24;
-// if (a25 != 25) return 25;
-// if (a26 != 26) return 26;
-// return -1;
-// }
-//
-// int virtualCall(int a)
-// {
-// return a * 2;
-// }
-//
-// void setFoo(int a)
-// {
-// foo_ = a;
-// }
-//
-// int getFoo()
-// {
-// return foo_;
-// }
-//
-// static int staticCall(int a)
-// {
-// IntMath foo = new IntMath();
-// return foo.virtualCall(a);
-// }
-//
-// static int testIGetPut(int a)
-// {
-// IntMath foo = new IntMath(99);
-// IntMath foo123 = new IntMath();
-// int z = foo.getFoo();
-// z += a;
-// z += foo123.getFoo();
-// foo.setFoo(z);
-// return foo.getFoo();
-// }
-//
-// public static void main(String[] args) {
-// int res = unopTest(38);
-// if (res == 37) {
-// System.out.printf("unopTest PASSED\n");
-// } else {
-// System.out.printf("unopTest FAILED: %d\n", res);
-// }
-// res = shiftTest1();
-// if (res == 0) {
-// System.out.printf("shiftTest1 PASSED\n");
-// } else {
-// System.out.printf("shiftTest1 FAILED: %d\n", res);
-// }
-// res = shiftTest2();
-// if (res == 0) {
-// System.out.printf("shiftTest2 PASSED\n");
-// } else {
-// System.out.printf("shiftTest2 FAILED: %d\n", res);
-// }
-// res = unsignedShiftTest();
-// if (res == 0) {
-// System.out.printf("unsignedShiftTest PASSED\n");
-// } else {
-// System.out.printf("unsignedShiftTest FAILED: %d\n", res);
-// }
-// res = convTest();
-// if (res == 0) {
-// System.out.printf("convTest PASSED\n");
-// } else {
-// System.out.printf("convTest FAILED: %d\n", res);
-// }
-// res = charSubTest();
-// if (res == 0) {
-// System.out.printf("charSubTest PASSED\n");
-// } else {
-// System.out.printf("charSubTest FAILED: %d\n", res);
-// }
-// res = intOperTest(70000, -3);
-// if (res == 0) {
-// System.out.printf("intOperTest PASSED\n");
-// } else {
-// System.out.printf("intOperTest FAILED: %d\n", res);
-// }
-// res = longOperTest(70000000000L, -3L);
-// if (res == 0) {
-// System.out.printf("longOperTest PASSED\n");
-// } else {
-// System.out.printf("longOperTest FAILED: %d\n", res);
-// }
-// long lres = longShiftTest(0xd5aa96deff00aa01L, 16);
-// if (lres == 0x96deff00aa010000L) {
-// System.out.printf("longShiftTest PASSED\n");
-// } else {
-// System.out.printf("longShiftTest FAILED: %d\n", res);
-// }
-//
-// res = switchTest(1);
-// if (res == 1234) {
-// System.out.printf("switchTest PASSED\n");
-// } else {
-// System.out.printf("switchTest FAILED: %d\n", res);
-// }
-//
-// res = testIntCompare(-5, 4, 4, 0);
-// if (res == 1111) {
-// System.out.printf("testIntCompare PASSED\n");
-// } else {
-// System.out.printf("testIntCompare FAILED: %d\n", res);
-// }
-//
-// res = testLongCompare(-5L, -4294967287L, 4L, 8L);
-// if (res == 2222) {
-// System.out.printf("testLongCompare PASSED\n");
-// } else {
-// System.out.printf("testLongCompare FAILED: %d\n", res);
-// }
-//
-// res = testFloatCompare(-5.0f, 4.0f, 4.0f, (1.0f/0.0f) / (1.0f/0.0f));
-// if (res == 3333) {
-// System.out.printf("testFloatCompare PASSED\n");
-// } else {
-// System.out.printf("testFloatCompare FAILED: %d\n", res);
-// }
-//
-// res = testDoubleCompare(-5.0, 4.0, 4.0, (1.0/0.0) / (1.0/0.0));
-// if (res == 4444) {
-// System.out.printf("testDoubleCompare PASSED\n");
-// } else {
-// System.out.printf("testDoubleCompare FAILED: %d\n", res);
-// }
-//
-// res = fibonacci(10);
-// if (res == 55) {
-// System.out.printf("fibonacci PASSED\n");
-// } else {
-// System.out.printf("fibonacci FAILED: %d\n", res);
-// }
-//
-///*
-// res = throwAndCatch();
-// if (res == 0) {
-// System.out.printf("throwAndCatch PASSED\n");
-// } else {
-// System.out.printf("throwAndCatch FAILED: %d\n", res);
-// }
-//*/
-//
-// res = manyArgs(0, 1L, 2, 3L, 4, 5L, 6, 7, 8.0, 9.0f, 10.0,
-// (short)11, 12, (char)13, 14, 15, (byte)-16, true, 18,
-// 19, 20L, 21L, 22, 23, 24, 25, 26);
-// if (res == -1) {
-// System.out.printf("manyArgs PASSED\n");
-// } else {
-// System.out.printf("manyArgs FAILED: %d\n", res);
-// }
-//
-// res = staticCall(3);
-// if (res == 6) {
-// System.out.printf("virtualCall PASSED\n");
-// } else {
-// System.out.printf("virtualCall FAILED: %d\n", res);
-// }
-//
-// res = testIGetPut(111);
-// if (res == 333) {
-// System.out.printf("testGetPut PASSED\n");
-// } else {
-// System.out.printf("testGetPut FAILED: %d\n", res);
-// }
-//
-// res = staticFieldTest(404);
-// if (res == 1404) {
-// System.out.printf("staticFieldTest PASSED\n");
-// } else {
-// System.out.printf("staticFieldTest FAILED: %d\n", res);
-// }
-// }
-//}
-static const char kIntMathDex[] =
-"ZGV4CjAzNQDNfScpnt+aCE7GCvHI7Jifma1Cw1Zt40LcLwAAcAAAAHhWNBIAAAAAAAAAADwvAAC+"
-"AAAAcAAAABMAAABoAwAADwAAALQDAAAUAAAAaAQAAB8AAAAIBQAAAgAAAAAGAACcKQAAQAYAAEYh"
-"AABOIQAAUSEAAFQhAABXIQAAWiEAAF0hAABkIQAAayEAAG8hAAB0IQAAeyEAAJkhAACeIQAApSEA"
-"ALMhAAC2IQAAuyEAAL8hAADKIQAAzyEAAOYhAAD7IQAADyIAACMiAAA3IgAARCIAAEciAABKIgAA"
-"TiIAAFIiAABVIgAAWSIAAF0iAAByIgAAhyIAAIoiAACOIgAAkiIAAJciAACcIgAAoSIAAKYiAACr"
-"IgAAsCIAALUiAAC6IgAAvyIAAMQiAADIIgAAzSIAANIiAADXIgAA3CIAAOEiAADmIgAA6yIAAO8i"
-"AADzIgAA9yIAAPsiAAD/IgAAAyMAAAcjAAASIwAAHCMAACIjAAAlIwAAKCMAAC8jAAA2IwAAQyMA"
-"AFwjAABxIwAAeyMAAJEjAACjIwAApiMAAKwjAACvIwAAsiMAAL0jAADUIwAA5yMAAOwjAAD0IwAA"
-"+iMAAP0jAAAFJAAACCQAAAskAAAPJAAAEyQAACAkAAA5JAAATiQAAFwkAABfJAAAaiQAAHQkAACC"
-"JAAAnCQAALIkAADBJAAA3CQAAPMkAAD5JAAABCUAAA8lAAAXJQAAHyUAACclAAAvJQAANyUAAEEl"
-"AABLJQAAVCUAAF0lAABkJQAAayUAAHMlAAB7JQAAhCUAAI0lAACdJQAArSUAALMlAAC9JQAA0yUA"
-"AOUlAADtJQAA9iUAAP0lAAAAJgAABSYAAA0mAAASJgAAGCYAAB8mAAAoJgAAMCYAADUmAAA9JgAA"
-"RiYAAEkmAABRJgAAXSYAAHUmAACJJgAAlSYAAK0mAADBJgAAzSYAAN4mAAD7JgAAFCcAABsnAAAn"
-"JwAAPycAAFMnAABmJwAAhScAAKAnAACyJwAA0CcAAOonAAACKAAAFigAACMoAAAzKAAATygAAGco"
-"AAB4KAAAlSgAAK4oAAC0KAAAvigAANQoAADmKAAA+SgAABgpAAAzKQAAOikAAEMpAABQKQAAaSkA"
-"AH4pAACBKQAAhCkAAIcpAAABAAAAAgAAAAMAAAAEAAAABQAAAA8AAAASAAAAFAAAABUAAAAWAAAA"
-"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"
-"AQAKJRMBJQACACUAMxDEAWIBEwAaArEAEgMjMxEAbjAcACEDcQAPAAAACiU5JccBYgETABoCkwAS"
-"AyMzEQBuMBwAIQNxABAAAAAKJTklygFiARMAGgKWABIDIzMRAG4wHAAhA3EAGgAAAAolOSXNAWIB"
-"EwAaArQAEgMjMxEAbjAcACEDcQADAAAACiU5JdABYgETABoCSwASAyMzEQBuMBwAIQNxAAIAAAAK"
-"JTkl0wFiARMAGgJIABIDIzMRAG4wHAAhAxQBcBEBABLScSAGACEACiU5JdIBYgETABoCXgASAyMz"
-"EQBuMBwAIQMYAQA8U0wQAAAAFgP9/3FACgAhQwolOSXOAWIBEwAaAmUAEgMjMxEAbjAcACEDGAEB"
-"qgD/3paq1RMDEABxMAsAIQMLIxgBAAABqgD/3pYxASMBOQHDAWIBEwAaAmgAEgMjMxEAbjAcACED"
-"EhFxEBMAAQAKJRMB0gQCACUAMxDBAWIBEwAaAp4AEgMjMxEAbjAcACEDErESQhJDEgRxQBcAIUMK"
-"JRMBVwQCACUAMxC8AWIBEwAaAqoAEgMjMxEAbjAcACEDFgH7/xgDCQAAAP////8WBQQAFgcIAHcI"
-"GAABAAolEwGuCAIAJQAzELABYgETABoCrQASAyMzEQBuMBwAIQMVAaDAFQKAQBUDgEAVBMB/cUAV"
-"ACFDCiUTAQUNAgAlADMQpwFiARMAGgKkABIDIzMRAG4wHAAhAxkBFMAZAxBAGQUQQBkH+H93CBQA"
-"AQAKJRMBXBECACUAMxCeAWIBEwAaAqEAEgMjMxEAbjAcACEDEwEKAHEQBAABAAolEwE3AAIAJQAz"
-"EJsBYgETABoCUgASAyMzEQBuMBwAIQMSARYCAQASJBYFAwASRxYIBQASahJ7GQwgQBUOEEEZDyRA"
-"ExELABMSDAATEw0AExQOABMVDwATFvD/ExcBABMYEgATGRMAFhoUABYcFQATHhYAEx8XABMgGAAT"
-"IRkAEyIaAHciDQABAAolEvECACUAMxBqAWIBEwAaAoAAEgMjMxEAbjAcACEDEjFxEBEAAQAKJRJh"
-"AgAlADMQaQFiARMAGgK5ABIDIzMRAG4wHAAhAxMBbwBxEBYAAQAKJRMBTQECACUAMxBmAWIBEwAa"
-"AqYAEgMjMxEAbjAcACEDEwGUAXEQEgABAAolEwF8BQIAJQAzEGMBYgETABoCmgASAyMzEQBuMBwA"
-"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"
-"oRISFBMUEACjFAoUoRISFBMUCACjFAwUoRISFKEQEg4YEoh3ZlVEMyIRMRIQEjgSBQATEgEADxIT"
-"EgAAKP0AAAMAAQACAAAAJCwAAAoAAAAiAAYAcBAAAAAAbiAbACAACgEPAQoAAQAAAAAAMCwAACgB"
-"AAATCH8AEweA/xMGAIAUBf///v8TBP9/EhBqAAEAEgBqAAIAawgDAGsHBABsBAUAFAD//wAAbAAG"
-"AG0EDwBtBhAAFAABAAEAZwALAGcFDAAUAFYOSUBnAAkAFQCA/2cACgAYAIh3ZlVEMyIRaAANABgA"
-"eIiZqrvM3e5oAA4AGABEF0FU+yEJQGgABwAZAPB/aAAIAGEADQAWAgEAvCBoABEAYQAOABYCAQC7"
-"IGgAEgBjAAEAOQAFABMACgAPAGMAAgA4AAUAEwALACj5ZAADADKABQATAAwAKPJkAAQAMnAFABMA"
-"DQAo62UABQAyQAUAEwAOACjkZQAGABQB//8AADIQBQATAA8AKNpmAA8AMkAFABMAEAAo02YAEAAy"
-"YAUAEwARACjMYAALABQBAQABADIQBQATABIAKMJgAAwAMlAFABMAEwAou2AACQAUASUGSUAtAAAB"
-"PQALAGAACQAUAYcWSUAuAAABOgAFABMAFAAopmAACgBgAQkALQAAAToABQATABUAKJthAA0AGAKI"
-"d2ZVRDMiETEAAAI4AAUAEwAWACiNYQAOABgCeIiZqrvM3e4xAAACOAAGABMAFwApAH//YQAHABgC"
-"OOkvVPshCUAvAAACPQANAGEABwAYAlBFUlT7IQlAMAAAAjoABgATABgAKQBl/2EACABhAgcAMAAA"
-"AjwABgATABkAKQBZ/2EAEQAYAod3ZlVEMyIRMQAAAjgABgATABoAKQBK/2EAEgAYAnmImaq7zN3u"
-"MQAAAjgABgATABsAKQA7/9CQ6AMpADf/AwABAAAAAABkLAAAsAAAABMA0gQrAmAAAAASYAEBDwES"
-"EAEBKP0SIAEBKPoSMAEBKPcSQAEBKPQSUAEBKPErAlsAAAAUAnhWNBIrAl0AAAASEAEBKOUScAEB"
-"KOITAAgAAQEo3hMACQABASjaLAJUAAAAEwAOAAEBKNMTAAoAAQEozxMACwABASjLEwAMAAEBKMcT"
-"AA0AAQEowywCUwAAABKyLAJZAAAAEwATAAEBKLgTAA8AAQEotBMAEAABASiwEwARAAEBKKwTABIA"
-"AQEoqAEBKKYAAQYA/////wYAAAAJAAAAFQAAAAwAAAAPAAAAEgAAAAABAgADAAAADAAAAA8AAAAA"
-"AQIAeFY0EhEAAAANAAAAAAIFAPr///8DAAAAFgAAADkAAAB4VjQSCwAAABMAAAAPAAAABwAAABcA"
-"AAAAAgIA+v///wMAAAALAAAADwAAAAACAwD7////AAAAAAwAAAAXAAAAEwAAAA8AAAAKAAgAAAAA"
-"AHMtAABIAAAAEwBcES8BAgQ9AQQAEhAPADABBAI7AQQAEiAo+i8BBAI5AQQAEjAo9C8BBAY4AQQA"
-"EkAo7jABBAg8AQQAElAo6C8BBAg6AQQAEmAo4jABAgg8AQQAEnAo3C8BAgg6AQUAEwAIACjVLwEI"
-"BDoBBQATAAkAKM4wAQgEPAEFABMACgAoxy8BCAg5AcT/EwALACjABgAEAAAAAAClLQAAPgAAABMA"
-"BQ0tAQIDPQEDABIQLgEDAjsBAwASIC0BAwI5AQMAEjAtAQMEOAEDABJALgEDBTwBAwASUC0BAwU6"
-"AQMAEmAuAQIFPAEDABJwLQECBToBBAATAAgALQEFAzoBBAATAAkALgEFAzwBBAATAAoALQEFBTkB"
-"BAATALwEDwAFAAEAAgAAAM8tAAAeAAAAIgAGABMDYwBwIAEAMAAiAQYAcBAAAAEAbhAFAAAACgKw"
-"Qm4QBQABAAoDsDJuIA4AIABuEAUAAAAKAw8DBgAEAAAAAADpLQAAQwAAABMAVwQ3MgQAEhEPATQy"
-"BAASISj8NSMEABIxKPg2IwQAEkEo9DMjBAASUSjwMkMEABJhKOwyIwcAPQIHABMBCAAo5RJxKOM6"
-"AgUAEwEJACjeOwMFABMBCgAo2TwDBQATAQsAKNQ5AwUAEwEMACjPOAUFABMBDQAoyjkFBAABASjG"
-"EwEOACjDAAANAAgAAAAAAB4uAABYAAAAFgMBABMArggxAQUJPQEEABIhDwExAQkFOwEEABIxKPox"
-"AQkFOQEEABJBKPSbAQkDMQEJAToBBAASUSjsmwEFAzEBBQE6AQQAEmEo5DEBCQU4AQkAMQEJCz0B"
-"BwATAQgAKNkScSjXMQELCTsBBQATAQkAKNAxAQsJOQEFABMBCgAoyTEBBQc7AQUAEwELACjCMQEH"
-"BT0BBQATAQwAKLsxAQcFOQEFABMBDQAotAEBKLIBAAEAAAAAAE8uAAAEAAAAewDfAAD/DwAHAAAA"
-"AAAAAFguAAAjAAAAEwb/DxL1FAT///8PEsASwxQB/P8AABLCjUCPQ45h4gICBDJQBAASFA8EMlME"
-"ABIkKPwyYQQAEjQo+DJCBAASRCj0EgQo8gAAAgABAAAAAAB8LgAAAwAAAFIQAAAPAAAAAgACAAAA"
-"AACCLgAAAwAAAFkBAAAOAAAAAwACAAAAAACKLgAAAwAAANoAAgIPAAAABAAAAAIAAgACAAIABAAA"
-"AAMAAwADAAMAAQAAAAQAAAACAAAABAAEAAQAAAAEAAQABAAEABsAAAAEAAUABAAFAAQABQAEAAQA"
-"AgADAAIADAAEAAEABAAEAAAADgAEAAQABQAFAAQABAAEAAQABAAAAAIAAAAFAAUABAAAAAUABQAF"
-"AAUAAgAAAAUABAACAAAACgARAAEAAAASAAY8aW5pdD4AAUIAAUMAAUQAAUYAAUkABUlEREREAAVJ"
-"RkZGRgACSUkAA0lJSQAFSUlJSUkAHElJSklKSUpJSURGRFNJQ0lJQlpJSUpKSUlJSUkAA0lKSgAF"
-"SUpKSkoADEludE1hdGguamF2YQABSgADSkpJAAJMSQAJTEludE1hdGg7AANMTEwAFUxqYXZhL2lv"
-"L1ByaW50U3RyZWFtOwATTGphdmEvbGFuZy9JbnRlZ2VyOwASTGphdmEvbGFuZy9PYmplY3Q7ABJM"
-"amF2YS9sYW5nL1N0cmluZzsAEkxqYXZhL2xhbmcvU3lzdGVtOwALT2JqZWN0LmphdmEAAVMAAVYA"
-"AlZJAAJWTAABWgACW0kAAltKABNbTGphdmEvbGFuZy9PYmplY3Q7ABNbTGphdmEvbGFuZy9TdHJp"
-"bmc7AAFhAAJhMAACYTEAA2ExMAADYTExAANhMTIAA2ExMwADYTE0AANhMTUAA2ExNgADYTE3AANh"
-"MTgAA2ExOQACYTIAA2EyMAADYTIxAANhMjIAA2EyMwADYTI0AANhMjUAA2EyNgACYTMAAmE0AAJh"
-"NQACYTYAAmE3AAJhOAACYTkACWFsc29NaW51cwAIYWxzb1BsdXMABGFyZ3MAAWIAAWMABWNoYXIx"
-"AAVjaGFyMgALY2hhclN1YlRlc3QAF2NoYXJTdWJUZXN0IEZBSUxFRDogJWQKABNjaGFyU3ViVGVz"
-"dCBQQVNTRUQKAAhjb252VGVzdAAUY29udlRlc3QgRkFJTEVEOiAlZAoAEGNvbnZUZXN0IFBBU1NF"
-"RAoAAWQABGRpc3QAAWUAAWYACWZpYm9uYWNjaQAVZmlib25hY2NpIEZBSUxFRDogJWQKABFmaWJv"
-"bmFjY2kgUEFTU0VECgADZm9vAAZmb28xMjMABGZvb18AAWcABmdldEZvbwABaAABaQACaTEAAmky"
-"AAtpbnRPcGVyVGVzdAAXaW50T3BlclRlc3QgRkFJTEVEOiAlZAoAE2ludE9wZXJUZXN0IFBBU1NF"
-"RAoADGludFNoaWZ0VGVzdAABbAAJbGl0MTZUZXN0AAhsaXQ4VGVzdAAMbG9uZ09wZXJUZXN0ABhs"
-"b25nT3BlclRlc3QgRkFJTEVEOiAlZAoAFGxvbmdPcGVyVGVzdCBQQVNTRUQKAA1sb25nU2hpZnRU"
-"ZXN0ABlsb25nU2hpZnRUZXN0IEZBSUxFRDogJWQKABVsb25nU2hpZnRUZXN0IFBBU1NFRAoABGxy"
-"ZXMACW1Cb29sZWFuMQAJbUJvb2xlYW4yAAZtQnl0ZTEABm1CeXRlMgAGbUJ5dGVzAAZtQ2hhcjEA"
-"Bm1DaGFyMgAIbURvdWJsZTEACG1Eb3VibGUyAAdtRmxvYXQxAAdtRmxvYXQyAAVtSW50MQAFbUlu"
-"dDIABm1Mb25nMQAGbUxvbmcyAAdtU2hvcnQxAAdtU2hvcnQyAA5tVm9sYXRpbGVMb25nMQAObVZv"
-"bGF0aWxlTG9uZzIABG1haW4ACG1hbnlBcmdzABRtYW55QXJncyBGQUlMRUQ6ICVkCgAQbWFueUFy"
-"Z3MgUEFTU0VECgAGbWluSW50AAdtaW5Mb25nAAVtaW51cwABbgADbmFuAAZuZWdPbmUAA291dAAE"
-"cGx1cwAFcGx1czIAB3BsdXNPbmUABnByaW50ZgADcmVzAAZyZXN1bHQAB3Jlc3VsdHMAAXMABnNl"
-"dEZvbwAKc2hpZnRUZXN0MQAWc2hpZnRUZXN0MSBGQUlMRUQ6ICVkCgASc2hpZnRUZXN0MSBQQVNT"
-"RUQKAApzaGlmdFRlc3QyABZzaGlmdFRlc3QyIEZBSUxFRDogJWQKABJzaGlmdFRlc3QyIFBBU1NF"
-"RAoACnN0YXRpY0NhbGwAD3N0YXRpY0ZpZWxkVGVzdAAbc3RhdGljRmllbGRUZXN0IEZBSUxFRDog"
-"JWQKABdzdGF0aWNGaWVsZFRlc3QgUEFTU0VECgAFc3R1ZmYACnN3aXRjaFRlc3QAFnN3aXRjaFRl"
-"c3QgRkFJTEVEOiAlZAoAEnN3aXRjaFRlc3QgUEFTU0VECgARdGVzdERvdWJsZUNvbXBhcmUAHXRl"
-"c3REb3VibGVDb21wYXJlIEZBSUxFRDogJWQKABl0ZXN0RG91YmxlQ29tcGFyZSBQQVNTRUQKABB0"
-"ZXN0RmxvYXRDb21wYXJlABx0ZXN0RmxvYXRDb21wYXJlIEZBSUxFRDogJWQKABh0ZXN0RmxvYXRD"
-"b21wYXJlIFBBU1NFRAoAFnRlc3RHZXRQdXQgRkFJTEVEOiAlZAoAEnRlc3RHZXRQdXQgUEFTU0VE"
-"CgALdGVzdElHZXRQdXQADnRlc3RJbnRDb21wYXJlABp0ZXN0SW50Q29tcGFyZSBGQUlMRUQ6ICVk"
-"CgAWdGVzdEludENvbXBhcmUgUEFTU0VECgAPdGVzdExvbmdDb21wYXJlABt0ZXN0TG9uZ0NvbXBh"
-"cmUgRkFJTEVEOiAlZAoAF3Rlc3RMb25nQ29tcGFyZSBQQVNTRUQKAAR0aGlzAAh1bm9wVGVzdAAU"
-"dW5vcFRlc3QgRkFJTEVEOiAlZAoAEHVub3BUZXN0IFBBU1NFRAoAEXVuc2lnbmVkU2hpZnRUZXN0"
-"AB11bnNpZ25lZFNoaWZ0VGVzdCBGQUlMRUQ6ICVkCgAZdW5zaWduZWRTaGlmdFRlc3QgUEFTU0VE"
-"CgAFdmFsdWUAB3ZhbHVlT2YAC3ZpcnR1YWxDYWxsABd2aXJ0dWFsQ2FsbCBGQUlMRUQ6ICVkCgAT"
-"dmlydHVhbENhbGwgUEFTU0VECgABeAABeQABegAEemVybwADAAcOABQABw48SwAQAZwBBw48LQCx"
-"AQAHDi0DAEUCPwMBRgItAwJaBWkAnAEABw4tAwBaBR4DAWEGAg53AnQdLR6JWh55Wh54AL8EAYUB"
-"Bx0tIRovAMABArsBvAEHWU0DBI8BEEtLS0taWlpaa+MtAwCCAQU8AwGHAQUeAwKLAQVbAwOOAQUC"
-"DCwCdR2WlpaWlmm0lsPTAKQCArYBTgdZLQMAjwEQS0tLeHsalpalAOoBAbsBB1lNAwCPARBLS0tL"
-"S1paW38CeR2WloeHlpbDAIYCAbsBB1lNAwKPARBLS0tLS1paWi0DAIIBBS0DAY4BBTUCeB2WlpaH"
-"eJaWwwC1AgK7AbwBBw5NAwiPARFaWlpaWmlaWmriLQMAgwEGSwMChwEGLQMEiwEGaQMGjgEGAgxZ"
-"AnUd4eHh4eG08MP/AREPlgDbAgK2AU4HWS0DAI8BEUtLS3jXAnsd4eHhagCbBQFCBw5pAyWNAQVp"
-"qEstqEstqEstqEstqEstqIctqLQtqLQDI2oGlqlaaamHaanwaanDaanDaalpaQIOpAE1EVqpWlqp"
-"aWmpaWmoAv1+HQUjARMUARMUARMUARMUARMUARMUARMUARMUBiMBExUBExUBExUBExUBExUBExUC"
-"EgETDgETFQETFQETFQDcBBslJjE5Ojs8PT4/JygpKissLS4vMDIzNDU2NzgHDgIbOwJmHYdah1qH"
-"WlqWlpaWlpaWlpaWpaWlpaWlpaWlAEwAB1l9AwRvEAIbhgJmHZaWlpalpaYBEg8DAFsFARUPAwFc"
-"BXkDAmEGllrEATgX0gJfLAByAAcOLQMAJAYtAwJDBi0DBEQGLQMGTQYtAwhPBi0DClAGLQMMVwYu"
-"Aw5ZBgEqEQMQjgEGtACLBQEkBw5aAwBUBwAZAbsBB7M8PC0tLVotLVotWkt4eHhLeHkCE2gCbh14"
-"eHh4pXh4pXgBFQ+04fABGg/D8PEA6gIBJAcOLgMAjQEFQgIoLAUAAwGNAQUCUh0FAQYAAQIFAAYB"
-"HgUBBgABAgUABgEfBQEGAAECBQAGAR4FAQYAAQIFAAYBHgUBBgABAgUABgEgBQEGAEE9PgECBQAG"
-"AQJ2HQUBBgABAgUABgEeBQEGAAEDBQAGASUFAQYAAQMFAAYBIAUBBgBBAQMFAAYBAnsdBQEGAAED"
-"BQAGAR4FAQYAAQMFAAYBHwUBBgABAwUABgEeBQEGAAEDBQAGASAFAQYAQR4/AQMFAAYBAnYdBQEG"
-"AAEDBQAGAR4FAQYAAQMFAAYBIwUBBgABAwUABgEfBQEGAAEDBQAGAQEBBQEGACQFAAYBAlEdARAX"
-"josBFharAKEEBIQBiQGKAYYBBw4uAwCNAQVLAhcdBQACah0GAEstSy1LLkstSy1LLUs8SzxLPUsA"
-"gQQEhAGJAYoBhgEHDi0DAI0BBUseSx5LHksfSx5LHkseSy1LLUsuSy4AkQUBJAcOeAMAVAdaAwFV"
-"B0sDAr0BBR5aPAChAwSEAYkBigG+AQcOLgMAjQEFLQIlHQJcHS0tLS0tLS0tLS8yLTcxLTwtPC08"
-"LTwtPUAbANMDBIQBQIkBQQcsLgMAjQEFSwIiHQJfHUstSy5pLWkvUUsCezsySzxLPks8SzxLTABG"
-"AbsBBw4eLQCDAQAHaB4DAEMBHgMDkAENPAMBRAIfAwJaBR4eHi4/GktLSwCGBQAHDgCBBQEkBw4t"
-"APwEASQHDgAAAAEAHoGABMAMEgEZAwEJAQkBCQEJAQkBCQEJAQkBCQEJAQkBCQEJAQkBCQEJAUkB"
-"SQACAIGABNQMAYGABPQMAQiQDQEIwA0BCLQOAgjwDgEI4BEBCPASAQjsFAEI9BYBCOAaAQmoHAEI"
-"qCkCCIgtAQiMMQEIsDIBCNQyAQi0NwEIpDoBCMQ7AQjQPAEInD0BCLQ+AQj0PwEIjEAFAORACQD8"
-"QA0AlEEAAAANAAAAAAAAAAEAAAAAAAAAAQAAAL4AAABwAAAAAgAAABMAAABoAwAAAwAAAA8AAAC0"
-"AwAABAAAABQAAABoBAAABQAAAB8AAAAIBQAABgAAAAIAAAAABgAAASAAAB0AAABABgAAARAAAAsA"
-"AACsIAAAAiAAAL4AAABGIQAAAyAAAB0AAACNKQAAACAAAAIAAACRLgAAABAAAAEAAAA8LwAA";
-} // namespace art