diff options
author | jeffhao <jeffhao@google.com> | 2011-09-29 17:41:15 -0700 |
---|---|---|
committer | jeffhao <jeffhao@google.com> | 2011-09-29 17:41:15 -0700 |
commit | 5d1ac920fdaef5d4ec8f66bb734488cd9660b024 (patch) | |
tree | dd372f306ab70f4c86759869b1f74eca62ff6f2b /test/003-omnibus-opcodes | |
parent | c31664f3d82e6cd68275a529a8a73f067a52e8be (diff) | |
download | art-5d1ac920fdaef5d4ec8f66bb734488cd9660b024.zip art-5d1ac920fdaef5d4ec8f66bb734488cd9660b024.tar.gz art-5d1ac920fdaef5d4ec8f66bb734488cd9660b024.tar.bz2 |
Adding old unit tests to test suite.
These tests are copied straight over. They'll still run, but they're
using the old system.
Change-Id: If494519e52ddf858a9febfc55bdae830468cb3c8
Diffstat (limited to 'test/003-omnibus-opcodes')
22 files changed, 4755 insertions, 0 deletions
diff --git a/test/003-omnibus-opcodes/build b/test/003-omnibus-opcodes/build new file mode 100644 index 0000000..9eb5ed3 --- /dev/null +++ b/test/003-omnibus-opcodes/build @@ -0,0 +1,26 @@ +#!/bin/bash +# +# Copyright (C) 2008 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Stop if something fails. +set -e + +mkdir classes +${JAVAC} -d classes `find src -name '*.java'` +rm classes/UnresClass.class +${JAVAC} -d classes `find src2 -name '*.java'` + +dx -JXmx256m --debug --dex --dump-to=classes.lst --output=classes.dex classes +zip test.jar classes.dex diff --git a/test/003-omnibus-opcodes/expected.txt b/test/003-omnibus-opcodes/expected.txt new file mode 100644 index 0000000..4895dc3 --- /dev/null +++ b/test/003-omnibus-opcodes/expected.txt @@ -0,0 +1,74 @@ +(assertions are enabled) +InstField assign... +InstField check... +InstField.nullCheck +StaticField assign... +StaticField check... +IntMath.shiftTest1 +IntMath.shiftTest2 +IntMath.unsignedShiftTest +IntMath.convTest +IntMath.charSubTest +IntMath.intOperTest +IntMath.intOperCheck +IntMath.longOperTest +IntMath.longOperCheck +IntMath.lit16Test +IntMath.lit8Test +IntMath.intShiftTest +IntMath.intShiftCheck +IntMath.longShiftTest +IntMath.longShiftCheck +IntMath.truncateTest +IntMath.divideByZero +IntMath.bigDivideOverflow +IntMath.checkConsts +IntMath.jlmTests +FloatMath.convTest +FloatMath.floatOperTest +FloatMath.doubleOperTest +FloatMath.checkConvI +FloatMath.checkConvL +FloatMath.checkConvF + 0: -2.0054409E9 + 1: -8.613303E18 + 2: -3.1415927 +-2.0054409E9, -8.6133031E18, -3.1415927 +FloatMath.checkConvD + 0: -2.005440939E9 + 1: -8.613303245920329E18 + 2: 123.45600128173828 +-2.005440939E9, -8.6133032459203287E18, 123.4560012817382 +FloatMath.checkConsts +FloatMath.jlmTests +IntMath.testIntCompare +IntMath.testLongCompare +IntMath.testFloatCompare +IntMath.testDoubleCompare +Monitor.run +Switch.testSwitch +Array check... +Array.checkRange32 +Array.checkRange64 +Array.checkNegAlloc +Classes.checkCast +Classes.arrayInstance +Goto.smallGoto +Goto.smallGoto +Goto.mediumGoto +Goto.mediumGoto +Goto.bigGoto +Goto.bigGoto + MethodCallBase ctor + MethodCall ctor +MethodCalls.manyArgs +Throw.one +Throw.twoA +Throw.twoN +Throw.rethrow +UnresTest1... +UnresTest1... +UnresTest2... +UnresTest2 done +InternedString.run +Done! diff --git a/test/003-omnibus-opcodes/info.txt b/test/003-omnibus-opcodes/info.txt new file mode 100644 index 0000000..6c0fbda --- /dev/null +++ b/test/003-omnibus-opcodes/info.txt @@ -0,0 +1 @@ +This is a smoke test of many Dalvik opcodes. diff --git a/test/003-omnibus-opcodes/src/Array.java b/test/003-omnibus-opcodes/src/Array.java new file mode 100644 index 0000000..f385dd8 --- /dev/null +++ b/test/003-omnibus-opcodes/src/Array.java @@ -0,0 +1,224 @@ +// Copyright 2008 The Android Open Source Project + + +/** + * Exercise arrays. + */ +public class Array { + + /* + * Verify array contents. + */ + static void checkBytes(byte[] bytes) { + assert(bytes[0] == 0); + assert(bytes[1] == -1); + assert(bytes[2] == -2); + assert(bytes[3] == -3); + assert(bytes[4] == -4); + } + static void checkShorts(short[] shorts) { + assert(shorts[0] == 20); + assert(shorts[1] == 10); + assert(shorts[2] == 0); + assert(shorts[3] == -10); + assert(shorts[4] == -20); + } + static void checkChars(char[] chars) { + assert(chars[0] == 40000); + assert(chars[1] == 40001); + assert(chars[2] == 40002); + assert(chars[3] == 40003); + assert(chars[4] == 40004); + } + static void checkInts(int[] ints) { + assert(ints[0] == 70000); + assert(ints[1] == 70001); + assert(ints[2] == 70002); + assert(ints[3] == 70003); + assert(ints[4] == 70004); + } + static void checkBooleans(boolean[] booleans) { + assert(booleans[0]); + assert(booleans[1]); + assert(!booleans[2]); + assert(booleans[3]); + assert(!booleans[4]); + } + static void checkFloats(float[] floats) { + assert(floats[0] == -1.5); + assert(floats[1] == -0.5); + assert(floats[2] == 0.0); + assert(floats[3] == 0.5); + assert(floats[4] == 1.5); + } + static void checkLongs(long[] longs) { + assert(longs[0] == 0x1122334455667788L); + assert(longs[1] == 0x8877665544332211L); + assert(longs[2] == 0L); + assert(longs[3] == 1L); + assert(longs[4] == -1L); + } + static void checkStrings(String[] strings) { + assert(strings[0].equals("zero")); + assert(strings[1].equals("one")); + assert(strings[2].equals("two")); + assert(strings[3].equals("three")); + assert(strings[4].equals("four")); + } + + /* + * Try bad range values, 32 bit get/put. + */ + static void checkRange32(int[] ints, int[] empty, int negVal1, int negVal2){ + System.out.println("Array.checkRange32"); + int i = 0; + + assert(ints.length == 5); + + try { + i = ints[5]; // exact bound + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + try { + ints[5] = i; // exact bound + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + try { + i = ints[6]; // one past + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + try { + i = ints[negVal1]; // -1 + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + try { + ints[negVal1] = i; // -1 + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + try { + i = ints[negVal2]; // min int + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + + + try { + i = empty[1]; + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + } + + /* + * Try bad range values, 64 bit get/put. + */ + static void checkRange64(long[] longs, int negVal1, int negVal2) { + System.out.println("Array.checkRange64"); + long l = 0L; + + assert(longs.length == 5); + + try { + l = longs[5]; // exact bound + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + try { + longs[5] = l; // exact bound + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + try { + l = longs[6]; // one past + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + try { + l = longs[negVal1]; // -1 + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + try { + longs[negVal1] = l; // -1 + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + try { + l = longs[negVal2]; // min int + assert(false); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // good + } + } + + /* + * Test negative allocations of object and primitive arrays. + */ + static void checkNegAlloc(int count) { + System.out.println("Array.checkNegAlloc"); + String[] strings; + int[] ints; + + try { + ints = new int[count]; + assert(false); + } catch (NegativeArraySizeException nase) { + // good + } + + try { + strings = new String[count]; + assert(false); + } catch (NegativeArraySizeException nase) { + // good + } + } + + public static void run() { + System.out.println("Array check..."); + + byte[] xBytes = new byte[] { 0, -1, -2, -3, -4 }; + short[] xShorts = new short[] { 20, 10, 0, -10, -20 }; + char[] xChars = new char[] { 40000, 40001, 40002, 40003, 40004 }; + int[] xInts = new int[] { 70000, 70001, 70002, 70003, 70004 }; + boolean[] xBooleans = new boolean[] { true, true, false, true, false }; + float[] xFloats = new float[] { -1.5f, -0.5f, 0.0f, 0.5f, 1.5f }; + long[] xLongs = new long[] { + 0x1122334455667788L, 0x8877665544332211L, 0L, 1L, -1l }; + String[] xStrings = new String[] { + "zero", "one", "two", "three", "four" }; + + int[] xEmpty = new int[0]; + + checkBytes(xBytes); + checkShorts(xShorts); + checkChars(xChars); + checkInts(xInts); + checkBooleans(xBooleans); + checkFloats(xFloats); + checkLongs(xLongs); + checkStrings(xStrings); + + checkRange32(xInts, xEmpty, -1, (int) 0x80000000); + checkRange64(xLongs, -1, (int) 0x80000000); + + checkNegAlloc(-1); + } +} diff --git a/test/003-omnibus-opcodes/src/Classes.java b/test/003-omnibus-opcodes/src/Classes.java new file mode 100644 index 0000000..c89ff3e --- /dev/null +++ b/test/003-omnibus-opcodes/src/Classes.java @@ -0,0 +1,219 @@ +// Copyright 2008 The Android Open Source Project + +import java.io.Serializable; +import java.util.Arrays; + +/** + * Exercise some class-related instructions. + */ +public class Classes { + int mSome; + + public void subFunc(boolean wantSub) { + assert(!wantSub); + } + + void checkCast(Object thisRef, Object moreRef, Object nullRef) { + System.out.println("Classes.checkCast"); + + Classes classes; + MoreClasses more; + + classes = (Classes) thisRef; + assert(thisRef instanceof Classes); + classes = (Classes) moreRef; + assert(moreRef instanceof Classes); + + more = (MoreClasses) moreRef; + assert(moreRef instanceof MoreClasses); + assert(!(thisRef instanceof MoreClasses)); + + try { + more = (MoreClasses) thisRef; + assert(false); + } catch (ClassCastException cce) { + //System.out.println(" class cast msg: " + cce.getMessage()); + //Dalvik throws terser message than Hotspot VM + assert(cce.getMessage().regionMatches(false, 0, "Classes", 0, 7)); + } + assert(!(thisRef instanceof MoreClasses)); + + /* hopefully these classes cause a resolve */ + try { + java.math.RoundingMode mode = (java.math.RoundingMode) thisRef; + assert(false); + } catch (ClassCastException cce) { + //System.out.println(" class cast msg: " + cce.getMessage()); + //Dalvik throws terser message than Hotspot VM + assert(cce.getMessage().regionMatches(false, 0, "Classes", 0, 7)); + } + assert(!(thisRef instanceof java.math.BigDecimal)); + + /* try some stuff with a null reference */ + classes = (Classes) nullRef; + classes = (MoreClasses) nullRef; + more = (MoreClasses) nullRef; + assert(!(nullRef instanceof Classes)); + + } + + + static void xTests(Object x) { + assert( x instanceof Classes); + assert(!(x instanceof MoreClasses)); + } + static void yTests(Object y) { + assert( y instanceof Classes); + assert( y instanceof MoreClasses); + } + static void xarTests(Object xar) { + assert( xar instanceof Object); + assert(!(xar instanceof Classes)); + assert( xar instanceof Classes[]); + assert(!(xar instanceof MoreClasses[])); + assert( xar instanceof Object[]); + assert(!(xar instanceof Object[][])); + } + static void yarTests(Object yar) { + assert( yar instanceof Classes[]); + assert( yar instanceof MoreClasses[]); + } + static void xarararTests(Object xararar) { + assert( xararar instanceof Object); + assert( xararar instanceof Object[]); + assert(!(xararar instanceof Classes)); + assert(!(xararar instanceof Classes[])); + assert(!(xararar instanceof Classes[][])); + assert( xararar instanceof Classes[][][]); + assert(!(xararar instanceof MoreClasses[][][])); + assert( xararar instanceof Object[][][]); + assert( xararar instanceof Serializable); + assert( xararar instanceof Serializable[]); + assert( xararar instanceof Serializable[][]); + assert(!(xararar instanceof Serializable[][][])); + } + static void yarararTests(Object yararar) { + assert( yararar instanceof Classes[][][]); + assert( yararar instanceof MoreClasses[][][]); + } + static void iarTests(Object iar) { + assert( iar instanceof Object); + assert(!(iar instanceof Object[])); + } + static void iararTests(Object iarar) { + assert( iarar instanceof Object); + assert( iarar instanceof Object[]); + assert(!(iarar instanceof Object[][])); + } + + /* + * Exercise filled-new-array and test instanceof on arrays. + * + * We call out instead of using "instanceof" directly to avoid + * compiler optimizations. + */ + static void arrayInstance() { + System.out.println("Classes.arrayInstance"); + + Classes x = new Classes(); + Classes[] xar = new Classes[1]; + Classes[][] xarar = new Classes[1][1]; + Classes[][][] xararar = new Classes[1][2][3]; + MoreClasses y = new MoreClasses(); + MoreClasses[] yar = new MoreClasses[3]; + MoreClasses[][] yarar = new MoreClasses[2][3]; + MoreClasses[][][] yararar = new MoreClasses[1][2][3]; + int[] iar = new int[1]; + int[][] iarar = new int[1][1]; + Object test; + + xTests(x); + yTests(y); + xarTests(xar); + yarTests(yar); + xarararTests(xararar); + yarararTests(yararar); + iarTests(iar); + iararTests(iarar); + + yararar[0] = yarar; + yararar[0][0] = yar; + yararar[0][1] = yar; + yararar[0][0][0] = y; + yararar[0][0][1] = y; + yararar[0][0][2] = y; + yararar[0][1][0] = y; + yararar[0][1][1] = y; + yararar[0][1][2] = y; + + String strForm; + + String[][][][] multi1 = new String[2][3][2][1]; + multi1[0] = new String[2][3][2]; + multi1[0][1] = new String[3][2]; + multi1[0][1][2] = new String[2]; + multi1[0][1][2][1] = "HELLO-1"; + strForm = Arrays.deepToString(multi1); + + String[][][][][] multi2 = new String[5][2][3][2][1]; + multi2[0] = new String[5][2][3][2]; + multi2[0][1] = new String[5][2][3]; + multi2[0][1][2] = new String[5][2]; + multi2[0][1][2][1] = new String[5]; + multi2[0][1][2][1][4] = "HELLO-2"; + strForm = Arrays.deepToString(multi2); + + + String[][][][][][] multi3 = new String[2][5][2][3][2][1]; + multi3[0] = new String[2][][][][]; + multi3[0][1] = new String[3][][][]; + multi3[0][1][2] = new String[2][][]; + multi3[0][1][2][1] = new String[5][]; + multi3[0][1][2][1][4] = new String[2]; + multi3[0][1][2][1][4][1] = "HELLO-3"; + strForm = Arrays.deepToString(multi3); + + // build up pieces + String[][][][][][] multi4 = new String[1][][][][][]; + multi4[0] = new String[2][][][][]; + multi4[0][1] = new String[3][][][]; + multi4[0][1][2] = new String[2][][]; + multi4[0][1][2][1] = new String[5][]; + multi4[0][1][2][1][4] = new String[2]; + multi4[0][1][2][1][4][1] = "HELLO-4"; + strForm = Arrays.deepToString(multi4); + + /* this is expected to fail; 1073921584 * 4 overflows 32 bits */ + try { + String[][][][][] multiX = new String[5][2][3][2][1073921584]; + assert(false); + } catch (Error e) { + //System.out.println(" Got expected failure: " + e); + } + + } + + public static void run() { + Classes classes = new Classes(); + MoreClasses more = new MoreClasses(); + classes.checkCast(classes, more, null); + + more.subFunc(true); + more.superFunc(false); + arrayInstance(); + } +} + +class MoreClasses extends Classes { + int mMore; + + public MoreClasses() {} + + public void subFunc(boolean wantSub) { + assert(wantSub); + } + + public void superFunc(boolean wantSub) { + super.subFunc(wantSub); + } +} diff --git a/test/003-omnibus-opcodes/src/Compare.java b/test/003-omnibus-opcodes/src/Compare.java new file mode 100644 index 0000000..43a708a --- /dev/null +++ b/test/003-omnibus-opcodes/src/Compare.java @@ -0,0 +1,171 @@ +// Copyright 2008 The Android Open Source Project + + + +/** + * Test comparison operators. + */ +public class Compare { + + /* + * Test the integer comparisons in various ways. + */ + static void testIntCompare(int minus, int plus, int plus2, int zero) { + System.out.println("IntMath.testIntCompare"); + + if (minus > plus) + assert(false); + if (minus >= plus) + assert(false); + if (plus < minus) + assert(false); + if (plus <= minus) + assert(false); + if (plus == minus) + assert(false); + if (plus != plus2) + assert(false); + + /* try a branch-taken */ + if (plus != minus) { + assert(true); + } else { + assert(false); + } + + if (minus > 0) + assert(false); + if (minus >= 0) + assert(false); + if (plus < 0) + assert(false); + if (plus <= 0) + assert(false); + if (plus == 0) + assert(false); + if (zero != 0) + assert(false); + + if (zero == 0) { + assert(true); + } else { + assert(false); + } + } + + /* + * Test cmp-long. + * + * minus=-5, alsoMinus=0xFFFFFFFF00000009, plus=4, alsoPlus=8 + */ + static void testLongCompare(long minus, long alsoMinus, long plus, + long alsoPlus) { + + System.out.println("IntMath.testLongCompare"); + if (minus > plus) + assert(false); + if (plus < minus) + assert(false); + if (plus == minus) + assert(false); + + if (plus >= plus+1) + assert(false); + if (minus >= minus+1) + assert(false); + + /* try a branch-taken */ + if (plus != minus) { + assert(true); + } else { + assert(false); + } + + /* compare when high words are equal but low words differ */ + if (plus > alsoPlus) + assert(false); + if (alsoPlus < plus) + assert(false); + if (alsoPlus == plus) + assert(false); + + /* high words are equal, low words have apparently different signs */ + if (minus < alsoMinus) // bug! + assert(false); + if (alsoMinus > minus) + assert(false); + if (alsoMinus == minus) + assert(false); + } + + /* + * Test cmpl-float and cmpg-float. + */ + static void testFloatCompare(float minus, float plus, float plus2, + float nan) { + + System.out.println("IntMath.testFloatCompare"); + if (minus > plus) + assert(false); + if (plus < minus) + assert(false); + if (plus == minus) + assert(false); + if (plus != plus2) + assert(false); + + if (plus <= nan) + assert(false); + if (plus >= nan) + assert(false); + if (minus <= nan) + assert(false); + if (minus >= nan) + assert(false); + if (nan >= plus) + assert(false); + if (nan <= plus) + assert(false); + + if (nan == nan) + assert(false); + } + + static void testDoubleCompare(double minus, double plus, double plus2, + double nan) { + + System.out.println("IntMath.testDoubleCompare"); + if (minus > plus) + assert(false); + if (plus < minus) + assert(false); + if (plus == minus) + assert(false); + if (plus != plus2) + assert(false); + + if (plus <= nan) + assert(false); + if (plus >= nan) + assert(false); + if (minus <= nan) + assert(false); + if (minus >= nan) + assert(false); + if (nan >= plus) + assert(false); + if (nan <= plus) + assert(false); + + if (nan == nan) + assert(false); + } + + public static void run() { + testIntCompare(-5, 4, 4, 0); + testLongCompare(-5L, -4294967287L, 4L, 8L); + + testFloatCompare(-5.0f, 4.0f, 4.0f, (1.0f/0.0f) / (1.0f/0.0f)); + testDoubleCompare(-5.0, 4.0, 4.0, (1.0/0.0) / (1.0/0.0)); + } +} diff --git a/test/003-omnibus-opcodes/src/FloatMath.java b/test/003-omnibus-opcodes/src/FloatMath.java new file mode 100644 index 0000000..3c49402 --- /dev/null +++ b/test/003-omnibus-opcodes/src/FloatMath.java @@ -0,0 +1,337 @@ +// Copyright 2006 The Android Open Source Project + +/** + * Test arithmetic operations. + */ +public class FloatMath { + + static void convTest() { + System.out.println("FloatMath.convTest"); + + float f; + double d; + int i; + long l; + + /* float --> int */ + f = 1234.5678f; + i = (int) f; + assert(i == 1234); + + f = -1234.5678f; + i = (int) f; + assert(i == -1234); + + /* float --> long */ + f = 1238.5678f; + l = (long) f; + assert(l == 1238); + + f = -1238.5678f; + l = (long) f; + assert(l == -1238); + + /* float --> double */ + f = 1238.5678f; + d = (double) f; + assert(d > 1238.567 && d < 1238.568); + + /* double --> int */ + d = 1234.5678; + i = (int) d; + assert(i == 1234); + + d = -1234.5678; + i = (int) d; + assert(i == -1234); + + /* double --> long */ + d = 5678956789.0123; + l = (long) d; + assert(l == 5678956789L); + + d = -5678956789.0123; + l = (long) d; + assert(l == -5678956789L); + + /* double --> float */ + d = 1238.5678; + f = (float) d; + assert(f > 1238.567 && f < 1238.568); + + /* int --> long */ + i = 7654; + l = (long) i; + assert(l == 7654L); + + i = -7654; + l = (long) i; + assert(l == -7654L); + + /* int --> float */ + i = 1234; + f = (float) i; + assert(f > 1233.9f && f < 1234.1f); + + i = -1234; + f = (float) i; + assert(f < -1233.9f && f > -1234.1f); + + /* int --> double */ + i = 1238; + d = (double) i; + assert(d > 1237.9f && d < 1238.1f); + + i = -1238; + d = (double) i; + assert(d < -1237.9f && d > -1238.1f); + + /* long --> int (with truncation) */ + l = 5678956789L; + i = (int) l; + assert(i == 1383989493); + + l = -5678956789L; + i = (int) l; + assert(i == -1383989493); + + /* long --> float */ + l = 5678956789L; + f = (float) l; + assert(f > 5.6789564E9 && f < 5.6789566E9); + + l = -5678956789L; + f = (float) l; + assert(f < -5.6789564E9 && f > -5.6789566E9); + + /* long --> double */ + l = 6678956789L; + d = (double) l; + assert(d > 6.6789567E9 && d < 6.6789568E9); + + l = -6678956789L; + d = (double) l; + assert(d < -6.6789567E9 && d > -6.6789568E9); + } + + /* + * We pass in the arguments and return the results so the compiler + * doesn't do the math for us. + */ + static float[] floatOperTest(float x, float y) { + System.out.println("FloatMath.floatOperTest"); + + float[] results = new float[9]; + + /* this seems to generate "op-float" instructions */ + results[0] = x + y; + results[1] = x - y; + results[2] = x * y; + results[3] = x / y; + results[4] = x % -y; + + /* this seems to generate "op-float/2addr" instructions */ + results[8] = x + (((((x + y) - y) * y) / y) % y); + + return results; + } + static void floatOperCheck(float[] results) { + assert(results[0] > 69996.99f && results[0] < 69997.01f); + assert(results[1] > 70002.99f && results[1] < 70003.01f); + assert(results[2] > -210000.01f && results[2] < -209999.99f); + assert(results[3] > -23333.34f && results[3] < -23333.32f); + assert(results[4] > 0.999f && results[4] < 1.001f); + assert(results[8] > 70000.99f && results[8] < 70001.01f); + } + + /* + * We pass in the arguments and return the results so the compiler + * doesn't do the math for us. + */ + static double[] doubleOperTest(double x, double y) { + System.out.println("FloatMath.doubleOperTest"); + + double[] results = new double[9]; + + /* this seems to generate "op-double" instructions */ + results[0] = x + y; + results[1] = x - y; + results[2] = x * y; + results[3] = x / y; + results[4] = x % -y; + + /* this seems to generate "op-double/2addr" instructions */ + results[8] = x + (((((x + y) - y) * y) / y) % y); + + return results; + } + static void doubleOperCheck(double[] results) { + assert(results[0] > 69996.99 && results[0] < 69997.01); + assert(results[1] > 70002.99 && results[1] < 70003.01); + assert(results[2] > -210000.01 && results[2] < -209999.99); + assert(results[3] > -23333.34 && results[3] < -23333.32); + assert(results[4] > 0.999 && results[4] < 1.001); + assert(results[8] > 70000.99 && results[8] < 70001.01); + } + + /* + * Try to cause some unary operations. + */ + static float unopTest(float f) { + f = -f; + return f; + } + + static int[] convI(long l, float f, double d, float zero) { + int[] results = new int[6]; + results[0] = (int) l; + results[1] = (int) f; + results[2] = (int) d; + results[3] = (int) (1.0f / zero); // +inf + results[4] = (int) (-1.0f / zero); // -inf + results[5] = (int) ((1.0f / zero) / (1.0f / zero)); // NaN + return results; + } + static void checkConvI(int[] results) { + System.out.println("FloatMath.checkConvI"); + assert(results[0] == 0x44332211); + assert(results[1] == 123); + assert(results[2] == -3); + assert(results[3] == 0x7fffffff); + assert(results[4] == 0x80000000); + assert(results[5] == 0); + } + + static long[] convL(int i, float f, double d, double zero) { + long[] results = new long[6]; + results[0] = (long) i; + results[1] = (long) f; + results[2] = (long) d; + results[3] = (long) (1.0 / zero); // +inf + results[4] = (long) (-1.0 / zero); // -inf + results[5] = (long) ((1.0 / zero) / (1.0 / zero)); // NaN + return results; + } + static void checkConvL(long[] results) { + System.out.println("FloatMath.checkConvL"); + assert(results[0] == 0xFFFFFFFF88776655L); + assert(results[1] == 123); + assert(results[2] == -3); + assert(results[3] == 0x7fffffffffffffffL); + assert(results[4] == 0x8000000000000000L); + assert(results[5] == 0); + } + + static float[] convF(int i, long l, double d) { + float[] results = new float[3]; + results[0] = (float) i; + results[1] = (float) l; + results[2] = (float) d; + return results; + } + static void checkConvF(float[] results) { + System.out.println("FloatMath.checkConvF"); + // TODO: assert values + for (int i = 0; i < results.length; i++) + System.out.println(" " + i + ": " + results[i]); + System.out.println("-2.0054409E9, -8.6133031E18, -3.1415927"); + } + + static double[] convD(int i, long l, float f) { + double[] results = new double[3]; + results[0] = (double) i; + results[1] = (double) l; + results[2] = (double) f; + return results; + } + static void checkConvD(double[] results) { + System.out.println("FloatMath.checkConvD"); + // TODO: assert values + for (int i = 0; i < results.length; i++) + System.out.println(" " + i + ": " + results[i]); + System.out.println("-2.005440939E9, -8.6133032459203287E18, 123.4560012817382"); + } + + static void checkConsts() { + System.out.println("FloatMath.checkConsts"); + + float f = 10.0f; // const/special + assert(f > 9.9 && f < 10.1); + + double d = 10.0; // const-wide/special + assert(d > 9.9 && d < 10.1); + } + + /* + * Determine if two floating point numbers are approximately equal. + * + * (Assumes that floating point is generally working, so we can't use + * this for the first set of tests.) + */ + static boolean approxEqual(float a, float b, float maxDelta) { + if (a > b) + return (a - b) < maxDelta; + else + return (b - a) < maxDelta; + } + static boolean approxEqual(double a, double b, double maxDelta) { + if (a > b) + return (a - b) < maxDelta; + else + return (b - a) < maxDelta; + } + + /* + * Test some java.lang.Math functions. + * + * The method arguments are positive values. + */ + static void jlmTests(float ff, double dd) { + System.out.println("FloatMath.jlmTests"); + + assert(approxEqual(Math.abs(ff), ff, 0.001f)); + assert(approxEqual(Math.abs(-ff), ff, 0.001f)); + assert(approxEqual(Math.min(ff, -5.0f), -5.0f, 0.001f)); + assert(approxEqual(Math.max(ff, -5.0f), ff, 0.001f)); + + assert(approxEqual(Math.abs(dd), dd, 0.001)); + assert(approxEqual(Math.abs(-dd), dd, 0.001)); + assert(approxEqual(Math.min(dd, -5.0), -5.0, 0.001)); + assert(approxEqual(Math.max(dd, -5.0), dd, 0.001)); + + double sq = Math.sqrt(dd); + assert(approxEqual(sq*sq, dd, 0.001)); + + assert(approxEqual(0.5403023058681398, Math.cos(1.0), 0.00000001)); + assert(approxEqual(0.8414709848078965, Math.sin(1.0), 0.00000001)); + } + + public static void run() { + convTest(); + + float[] floatResults; + double[] doubleResults; + int[] intResults; + long[] longResults; + + floatResults = floatOperTest(70000.0f, -3.0f); + floatOperCheck(floatResults); + doubleResults = doubleOperTest(70000.0, -3.0); + doubleOperCheck(doubleResults); + + intResults = convI(0x8877665544332211L, 123.456f, -3.1415926535, 0.0f); + checkConvI(intResults); + longResults = convL(0x88776655, 123.456f, -3.1415926535, 0.0); + checkConvL(longResults); + floatResults = convF(0x88776655, 0x8877665544332211L, -3.1415926535); + checkConvF(floatResults); + doubleResults = convD(0x88776655, 0x8877665544332211L, 123.456f); + checkConvD(doubleResults); + + unopTest(123.456f); + + checkConsts(); + + jlmTests(3.14159f, 123456.78987654321); + } +} diff --git a/test/003-omnibus-opcodes/src/Goto.java b/test/003-omnibus-opcodes/src/Goto.java new file mode 100644 index 0000000..d56ceae --- /dev/null +++ b/test/003-omnibus-opcodes/src/Goto.java @@ -0,0 +1,2408 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Try to cause some gotos. + */ +class Goto { + static int filler(int i) { + return i+1; + } + + static int smallGoto(boolean which) { + System.out.println("Goto.smallGoto"); + + int i = 0; + + if (which) { + i += filler(i); + } else { + i -= filler(i); + } + + return i; + } + + static int mediumGoto(boolean which) { + System.out.println("Goto.mediumGoto"); + + int i = 0; + + if (which) { + i += filler(i); + } else { + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + } + + return i; + } + + static int bigGoto(boolean which) { + System.out.println("Goto.bigGoto"); + + int i = 0; + + if (which) { + i += filler(i); + } else { + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + i -= filler(i); i -= filler(i); i -= filler(i); i -= filler(i); + } + + return i; + } + + public static void run() { + smallGoto(false); + smallGoto(true); + mediumGoto(false); + mediumGoto(true); + bigGoto(false); + bigGoto(true); + } +}; diff --git a/test/003-omnibus-opcodes/src/InstField.java b/test/003-omnibus-opcodes/src/InstField.java new file mode 100644 index 0000000..80b95ab --- /dev/null +++ b/test/003-omnibus-opcodes/src/InstField.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +public class InstField { + public boolean mBoolean1, mBoolean2; + public byte mByte1, mByte2; + public char mChar1, mChar2; + public short mShort1, mShort2; + public int mInt1, mInt2; + public float mFloat1, mFloat2; + public long mLong1, mLong2; + public double mDouble1, mDouble2; + public volatile long mVolatileLong1, mVolatileLong2; + + public void run() { + assignFields(); + checkFields(); + InstField.nullCheck(null); + } + + /* + * Check access to instance fields through a null pointer. + */ + static public void nullCheck(InstField nully) { + System.out.println("InstField.nullCheck"); + try { + int x = nully.mInt1; + assert(false); + } catch (NullPointerException npe) { + // good + } + try { + long l = nully.mLong1; + assert(false); + } catch (NullPointerException npe) { + // good + } + try { + nully.mInt1 = 5; + assert(false); + } catch (NullPointerException npe) { + // good + } + try { + nully.mLong1 = 17L; + assert(false); + } catch (NullPointerException npe) { + // good + } + } + + public void assignFields() { + System.out.println("InstField assign..."); + 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; + } + + public void checkFields() { + System.out.println("InstField check..."); + assert(mBoolean1); + assert(!mBoolean2); + assert(mByte1 == 127); + assert(mByte2 == -128); + assert(mChar1 == 32767); + assert(mChar2 == 65535); + assert(mShort1 == 32767); + assert(mShort2 == -32768); + assert(mInt1 == 65537); + assert(mInt2 == -65537); + assert(mFloat1 > 3.141f && mFloat1 < 3.142f); + assert(mFloat2 < mFloat1); + assert(mLong1 == 1234605616436508552L); + assert(mLong2 == -1234605616436508552L); + assert(mDouble1 > 3.141592653 && mDouble1 < 3.141592654); + assert(mDouble2 > mDouble1); + assert(mVolatileLong1 == 1234605616436508551L); + assert(mVolatileLong2 == -1234605616436508551L); + } +} diff --git a/test/003-omnibus-opcodes/src/IntMath.java b/test/003-omnibus-opcodes/src/IntMath.java new file mode 100644 index 0000000..89194de --- /dev/null +++ b/test/003-omnibus-opcodes/src/IntMath.java @@ -0,0 +1,492 @@ +// Copyright 2006 The Android Open Source Project + +/** + * Test arithmetic operations. + */ +public class IntMath { + + static void shiftTest1() { + System.out.println("IntMath.shiftTest1"); + + final int[] mBytes = { + 0x11, 0x22, 0x33, 0x44, 0x88, 0x99, 0xaa, 0xbb + }; + long l; + int i1, i2; + + 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); + + assert(i1 == 0x44332211); + assert(i2 == 0xbbaa9988); + assert(l == 0xbbaa998844332211L); + + 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; + + assert(l == 0xbbaa998844332211L); + } + + static void shiftTest2() { + System.out.println("IntMath.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); + + assert(result == 0x1122334455667788L); + } + + static void unsignedShiftTest() { + System.out.println("IntMath.unsignedShiftTest"); + + byte b = -4; + short s = -4; + char c = 0xfffc; + int i = -4; + + b >>>= 4; + s >>>= 4; + c >>>= 4; + i >>>= 4; + + assert((int) b == -1); + assert((int) s == -1); + assert((int) c == 0x0fff); + assert(i == 268435455); + } + + static void convTest() { + System.out.println("IntMath.convTest"); + + float f; + double d; + int i; + long l; + + /* int --> long */ + i = 7654; + l = (long) i; + assert(l == 7654L); + + i = -7654; + l = (long) i; + assert(l == -7654L); + + /* long --> int (with truncation) */ + l = 5678956789L; + i = (int) l; + assert(i == 1383989493); + + l = -5678956789L; + i = (int) l; + assert(i == -1383989493); + } + + static void charSubTest() { + System.out.println("IntMath.charSubTest"); + + char char1 = 0x00e9; + char char2 = 0xffff; + int i; + + /* chars are unsigned-expanded to ints before subtraction */ + i = char1 - char2; + assert(i == 0xffff00ea); + } + + /* + * 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) { + System.out.println("IntMath.intOperTest"); + + 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); + + return results; + } + static void intOperCheck(int[] results) { + System.out.println("IntMath.intOperCheck"); + + /* 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; + assert(result == minInt); + + assert(results[0] == 69997); + assert(results[1] == 70003); + assert(results[2] == -210000); + assert(results[3] == 605032704); // overflow / truncate + assert(results[4] == -23333); + assert(results[5] == 1); + assert(results[6] == 70000); + assert(results[7] == -3); + assert(results[8] == -70003); + assert(results[9] == 70000); + } + + /* + * More operations, this time with 16-bit constants. (x=77777) + */ + static int[] lit16Test(int x) { + System.out.println("IntMath.lit16Test"); + + 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; + return results; + } + static void lit16Check(int[] results) { + assert(results[0] == 78777); + assert(results[1] == -76777); + assert(results[2] == 77777000); + assert(results[3] == 77); + assert(results[4] == 777); + assert(results[5] == 960); + assert(results[6] == -39); + assert(results[7] == -76855); + } + + /* + * More operations, this time with 8-bit constants. (x=-55555) + */ + static int[] lit8Test(int x) { + System.out.println("IntMath.lit8Test"); + + 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; + return results; + } + static void lit8Check(int[] results) { + //for (int i = 0; i < results.length; i++) + // System.out.println(" " + i + ": " + results[i]); + + /* check this edge case while we're here (div-int/lit8) */ + int minInt = -2147483648; + int result = minInt / -1; + assert(result == minInt); + + assert(results[0] == -55545); + assert(results[1] == 55565); + assert(results[2] == -555550); + assert(results[3] == -5555); + assert(results[4] == -5); + assert(results[5] == 8); + assert(results[6] == -1); + assert(results[7] == 55563); + } + + + /* + * Shift some data. (value=0xff00aa01, dist=8) + */ + static int[] intShiftTest(int value, int dist) { + System.out.println("IntMath.intShiftTest"); + + int results[] = new int[4]; + + results[0] = value << dist; + results[1] = value >> dist; + results[2] = value >>> dist; + + results[3] = (((value << dist) >> dist) >>> dist) << dist; + return results; + } + static void intShiftCheck(int[] results) { + System.out.println("IntMath.intShiftCheck"); + + assert(results[0] == 0x00aa0100); + assert(results[1] == 0xffff00aa); + assert(results[2] == 0x00ff00aa); + assert(results[3] == 0xaa00); + } + + /* + * We pass in the arguments and return the results so the compiler + * doesn't do the math for us. (x=70000000000, y=-3) + */ + static long[] longOperTest(long x, long y) { + System.out.println("IntMath.longOperTest"); + + 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); + + return results; + } + static void longOperCheck(long[] results) { + System.out.println("IntMath.longOperCheck"); + + /* 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; + assert(result == minLong); + + assert(results[0] == 69999999997L); + assert(results[1] == 70000000003L); + assert(results[2] == -210000000000L); + assert(results[3] == -6833923606740729856L); // overflow + assert(results[4] == -23333333333L); + assert(results[5] == 1); + assert(results[6] == 70000000000L); + assert(results[7] == -3); + assert(results[8] == -70000000003L); + assert(results[9] == 70000000000L); + + assert(results.length == 10); + } + + /* + * Shift some data. (value=0xd5aa96deff00aa01, dist=8) + */ + static long[] longShiftTest(long value, int dist) { + System.out.println("IntMath.longShiftTest"); + + long results[] = new long[4]; + + results[0] = value << dist; + results[1] = value >> dist; + results[2] = value >>> dist; + + results[3] = (((value << dist) >> dist) >>> dist) << dist; + return results; + } + static long longShiftCheck(long[] results) { + System.out.println("IntMath.longShiftCheck"); + + assert(results[0] == 0x96deff00aa010000L); + assert(results[1] == 0xffffd5aa96deff00L); + assert(results[2] == 0x0000d5aa96deff00L); + assert(results[3] == 0xffff96deff000000L); + + assert(results.length == 4); + + return results[0]; // test return-long + } + + + /* + * Try to cause some unary operations. + */ + static int unopTest(int x) { + x = -x; + x ^= 0xffffffff; + return x; + } + static void unopCheck(int result) { + assert(result == 37); + } + + static class Shorty { + public short mShort; + public char mChar; + public byte mByte; + }; + + /* + * Truncate an int. + */ + static Shorty truncateTest(int x) { + System.out.println("IntMath.truncateTest"); + Shorty shorts = new Shorty(); + + shorts.mShort = (short) x; + shorts.mChar = (char) x; + shorts.mByte = (byte) x; + return shorts; + } + static void truncateCheck(Shorty shorts) { + assert(shorts.mShort == -5597); // 0xea23 + assert(shorts.mChar == 59939); // 0xea23 + assert(shorts.mByte == 35); // 0x23 + } + + /* + * Verify that we get a divide-by-zero exception. + */ + static void divideByZero(int z) { + System.out.println("IntMath.divideByZero"); + + try { + int x = 100 / z; + assert(false); + } catch (ArithmeticException ae) { + } + + try { + int x = 100 % z; + assert(false); + } catch (ArithmeticException ae) { + } + + try { + long x = 100L / z; + assert(false); + } catch (ArithmeticException ae) { + } + + try { + long x = 100L % z; + assert(false); + } catch (ArithmeticException ae) { + } + } + + /* + * Check an edge condition: dividing the most-negative integer by -1 + * returns the most-negative integer, and doesn't cause an exception. + * + * Pass in -1, -1L. + */ + static void bigDivideOverflow(int idiv, long ldiv) { + System.out.println("IntMath.bigDivideOverflow"); + int mostNegInt = (int) 0x80000000; + long mostNegLong = (long) 0x8000000000000000L; + + int intDivResult = mostNegInt / idiv; + int intModResult = mostNegInt % idiv; + long longDivResult = mostNegLong / ldiv; + long longModResult = mostNegLong % ldiv; + + assert(intDivResult == mostNegInt); + assert(intModResult == 0); + assert(longDivResult == mostNegLong); + assert(longModResult == 0); + } + + /* + * Check "const" instructions. We use negative values to ensure that + * sign-extension is happening. + */ + static void checkConsts(byte small, short medium, int large, long huge) { + System.out.println("IntMath.checkConsts"); + + assert(small == 1); // const/4 + assert(medium == -256); // const/16 + assert(medium == -256L); // const-wide/16 + assert(large == -88888); // const + assert(large == -88888L); // const-wide/32 + assert(huge == 0x9922334455667788L); // const-wide + } + + /* + * Test some java.lang.Math functions. + * + * The method arguments are positive values. + */ + static void jlmTests(int ii, long ll) { + System.out.println("IntMath.jlmTests"); + + assert(Math.abs(ii) == ii); + assert(Math.abs(-ii) == ii); + assert(Math.min(ii, -5) == -5); + assert(Math.max(ii, -5) == ii); + + assert(Math.abs(ll) == ll); + assert(Math.abs(-ll) == ll); + assert(Math.min(ll, -5L) == -5L); + assert(Math.max(ll, -5L) == ll); + } + + public static void run() { + shiftTest1(); + shiftTest2(); + unsignedShiftTest(); + convTest(); + charSubTest(); + + int[] intResults; + long[] longResults; + + intResults = intOperTest(70000, -3); + intOperCheck(intResults); + longResults = longOperTest(70000000000L, -3L); + longOperCheck(longResults); + + intResults = lit16Test(77777); + lit16Check(intResults); + intResults = lit8Test(-55555); + lit8Check(intResults); + + intResults = intShiftTest(0xff00aa01, 8); + intShiftCheck(intResults); + longResults = longShiftTest(0xd5aa96deff00aa01L, 16); + long longRet = longShiftCheck(longResults); + assert(longRet == 0x96deff00aa010000L); + + Shorty shorts = truncateTest(-16717277); // 0xff00ea23 + truncateCheck(shorts); + + divideByZero(0); + bigDivideOverflow(-1, -1L); + + checkConsts((byte) 1, (short) -256, -88888, 0x9922334455667788L); + + unopCheck(unopTest(38)); + + jlmTests(12345, 0x1122334455667788L); + } +} diff --git a/test/003-omnibus-opcodes/src/InternedString.java b/test/003-omnibus-opcodes/src/InternedString.java new file mode 100644 index 0000000..4baab0c --- /dev/null +++ b/test/003-omnibus-opcodes/src/InternedString.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.lang.ref.*; + +public class InternedString { + public static final String CONST = "Class InternedString"; + + public static void run() { + System.out.println("InternedString.run"); + testImmortalInternedString(); + testDeadInternedString(); + } + + private static void testDeadInternedString() { + String s = "blah"; + s = s + s; + WeakReference strRef = new WeakReference<String>(s.intern()); + // Kill s, otherwise the string object is still accessible from root set + s = CONST; + System.gc(); + // "blahblah" should disappear from the intern list + assert(strRef.get() == null); + } + + private static void testImmortalInternedString() { + WeakReference strRef = new WeakReference<String>(CONST.intern()); + System.gc(); + // Class constant string should be entered to the interned table when + // loaded + assert(CONST == CONST.intern()); + // and it should survive the gc + assert(strRef.get() != null); + + String s = CONST; + // "Class InternedString" should remain on the intern list + strRef = new WeakReference<String>(s.intern()); + // Kill s, otherwise the string object is still accessible from root set + s = ""; + System.gc(); + assert(strRef.get() == CONST); + } +} diff --git a/test/003-omnibus-opcodes/src/Main.java b/test/003-omnibus-opcodes/src/Main.java new file mode 100644 index 0000000..fb39d76 --- /dev/null +++ b/test/003-omnibus-opcodes/src/Main.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Dalvik instruction exerciser. + */ +public class Main { + /* + * Start up. + */ + public static void main(String[] args) { + boolean assertEnabled = false; + assert assertEnabled = true; + if (!assertEnabled) { + System.out.println("FAIL: assert doesn't work (specify '-ea')\n"); + throw new RuntimeException(); + } else { + System.out.println("(assertions are enabled)"); + } + + Main main = new Main(); + main.run(); + + /* run through the heap to see if we trashed something */ + System.gc(); + + System.out.println("Done!"); + } + + public void run() { + InstField instField = new InstField(); + instField.run(); + + StaticField.run(); + + IntMath.run(); + FloatMath.run(); + Compare.run(); + + Monitor.run(); + Switch.run(); + Array.run(); + Classes.run(); + Goto.run(); + MethodCall.run(); + Throw.run(); + + try { + UnresTest1.run(); + } catch (VerifyError ve) { + System.out.println("Caught: " + ve); + } + try { + UnresTest1.run(); + } catch (VerifyError ve) { + System.out.println("Caught (retry): " + ve); + } + + try { + UnresTest2.run(); + } catch (VerifyError ve) { + System.out.println("Caught: " + ve); + } catch (NoClassDefFoundError ncdfe) { + /* UnresClass can cause desktop Java to freak out */ + System.out.println("NOTE: UnresTest2 not available"); + } + InternedString.run(); + } +} diff --git a/test/003-omnibus-opcodes/src/MethodCall.java b/test/003-omnibus-opcodes/src/MethodCall.java new file mode 100644 index 0000000..f89194b --- /dev/null +++ b/test/003-omnibus-opcodes/src/MethodCall.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Try different kinds of method calls. + */ +public class MethodCall extends MethodCallBase { + MethodCall() { + super(); + System.out.println(" MethodCall ctor"); + } + + /* overridden method */ + int tryThing() { + int val = super.tryThing(); + assert(val == 7); + return val; + } + + /* do-nothing private instance method */ + private void directly() {} + + /* + * Function with many arguments. + */ + static void 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, + String[][] a27, String[] a28, String a29) + { + System.out.println("MethodCalls.manyArgs"); + assert(a0 == 0); + assert(a9 > 8.99 && a9 < 9.01); + assert(a16 == -16); + assert(a25 == 25); + assert(a29.equals("twenty nine")); + } + + public static void run() { + MethodCall inst = new MethodCall(); + + MethodCallBase base = inst; + base.tryThing(); + inst.tryThing(); + + inst = null; + try { + inst.directly(); + assert(false); + } catch (NullPointerException npe) { + // good + } + + 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, null, null, "twenty nine"); + } +} + +class MethodCallBase { + MethodCallBase() { + System.out.println(" MethodCallBase ctor"); + } + + int tryThing() { + return 7; + } +} diff --git a/test/003-omnibus-opcodes/src/Monitor.java b/test/003-omnibus-opcodes/src/Monitor.java new file mode 100644 index 0000000..66d7c65 --- /dev/null +++ b/test/003-omnibus-opcodes/src/Monitor.java @@ -0,0 +1,44 @@ +// Copyright 2008 The Android Open Source Project + + + +/** + * Exercise monitors. + */ +public class Monitor { + public static int mVal = 0; + + public synchronized void subTest() { + Object obj = new Object(); + synchronized (obj) { + mVal++; + obj = null; // does NOT cause a failure on exit + assert(obj == null); + } + } + + + public static void run() { + System.out.println("Monitor.run"); + + Object obj = null; + + try { + synchronized (obj) { + mVal++; + } + assert(false); + } catch (NullPointerException npe) { + /* expected */ + } + + obj = new Object(); + synchronized (obj) { + mVal++; + } + + new Monitor().subTest(); + + assert(mVal == 2); + } +} diff --git a/test/003-omnibus-opcodes/src/StaticField.java b/test/003-omnibus-opcodes/src/StaticField.java new file mode 100644 index 0000000..7ccdd7e --- /dev/null +++ b/test/003-omnibus-opcodes/src/StaticField.java @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +public class StaticField { + 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; + + public static void run() { + assignFields(); + checkFields(); + } + + public static void assignFields() { + System.out.println("StaticField assign..."); + 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; + } + + public static void checkFields() { + System.out.println("StaticField check..."); + assert(mBoolean1); + assert(!mBoolean2); + assert(mByte1 == 127); + assert(mByte2 == -128); + assert(mChar1 == 32767); + assert(mChar2 == 65535); + assert(mShort1 == 32767); + assert(mShort2 == -32768); + assert(mInt1 == 65537); + assert(mInt2 == -65537); + assert(mFloat1 > 3.141f && mFloat2 < 3.142f); + assert(mFloat2 < mFloat1); + assert(mLong1 == 1234605616436508552L); + assert(mLong2 == -1234605616436508552L); + assert(mDouble1 > 3.141592653 && mDouble1 < 3.141592654); + assert(mDouble2 > mDouble1); + assert(mVolatileLong1 == 1234605616436508551L); + assert(mVolatileLong2 == -1234605616436508551L); + } +} diff --git a/test/003-omnibus-opcodes/src/Switch.java b/test/003-omnibus-opcodes/src/Switch.java new file mode 100644 index 0000000..67c82b0 --- /dev/null +++ b/test/003-omnibus-opcodes/src/Switch.java @@ -0,0 +1,62 @@ +public class Switch { + /** + * Test switch() blocks + */ + private static void testSwitch() { + System.out.println("Switch.testSwitch"); + + int a = 1; + + switch (a) { + case -1: assert(false); break; + case 0: assert(false); break; + case 1: /*correct*/ break; + case 2: assert(false); break; + case 3: assert(false); break; + case 4: assert(false); break; + default: assert(false); break; + } + switch (a) { + case 3: assert(false); break; + case 4: assert(false); break; + default: /*correct*/ break; + } + + a = 0x12345678; + + switch (a) { + case 0x12345678: /*correct*/ break; + case 0x12345679: assert(false); break; + default: assert(false); break; + } + switch (a) { + case 57: assert(false); break; + case -6: assert(false); break; + case 0x12345678: /*correct*/ break; + case 22: assert(false); break; + case 3: assert(false); break; + default: assert(false); break; + } + switch (a) { + case -6: assert(false); break; + case 3: assert(false); break; + default: /*correct*/ break; + } + + a = -5; + switch (a) { + case 12: assert(false); break; + case -5: /*correct*/ break; + case 0: assert(false); break; + default: assert(false); break; + } + + switch (a) { + default: /*correct*/ break; + } + } + + public static void run() { + testSwitch(); + } +} diff --git a/test/003-omnibus-opcodes/src/Throw.java b/test/003-omnibus-opcodes/src/Throw.java new file mode 100644 index 0000000..91ee6dd --- /dev/null +++ b/test/003-omnibus-opcodes/src/Throw.java @@ -0,0 +1,124 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Test exception throwing. + */ +public class Throw { + public void throwNullPointerException() { + throw new NullPointerException("npe!"); + } + + public void throwArithmeticException() { + throw new ArithmeticException(); + } + + public void one() { + System.out.println("Throw.one"); + try { + throwNullPointerException(); + assert(false); + } catch (Exception ex) { + // good + return; + } + + assert(false); + } + + public void twoA() { + System.out.println("Throw.twoA"); + boolean gotN = false; + boolean gotA = false; + boolean gotWeird = false; + + try { + try { + throwArithmeticException(); + gotWeird = true; + } catch (ArithmeticException ae) { + gotA = true; + } + } catch (NullPointerException npe) { + gotN = true; + } + + assert(gotA); + assert(!gotN); + assert(!gotWeird); + } + + public void twoN() { + System.out.println("Throw.twoN"); + boolean gotN = false; + boolean gotA = false; + boolean gotWeird = false; + + try { + try { + throwNullPointerException(); + gotWeird = true; + } catch (ArithmeticException ae) { + gotA = true; + } + } catch (NullPointerException npe) { + gotN = true; + } + + assert(!gotA); + assert(gotN); + assert(!gotWeird); + } + + public void rethrow() { + System.out.println("Throw.rethrow"); + boolean caught = false; + boolean lly = false; + boolean second = false; + + try { + try { + throwNullPointerException(); + assert(false); + } catch (Exception ex) { + if (ex instanceof ArithmeticException) { + assert(false); + } + if (ex instanceof NullPointerException) { + caught = true; + throw (NullPointerException) ex; + } + } finally { + lly = true; + } + } catch (Exception ex) { + second = true; + } + + assert(caught); + assert(lly); + assert(second); + } + + public static void run() { + Throw th = new Throw(); + + th.one(); + th.twoA(); + th.twoN(); + th.rethrow(); + } +} diff --git a/test/003-omnibus-opcodes/src/UnresClass.java b/test/003-omnibus-opcodes/src/UnresClass.java new file mode 100644 index 0000000..52b3d4f --- /dev/null +++ b/test/003-omnibus-opcodes/src/UnresClass.java @@ -0,0 +1,9 @@ +/* + * Unresolved class. + * + * "happy" version. + */ + +public class UnresClass { + int foo; +} diff --git a/test/003-omnibus-opcodes/src/UnresStuff.java b/test/003-omnibus-opcodes/src/UnresStuff.java new file mode 100644 index 0000000..1d2a556 --- /dev/null +++ b/test/003-omnibus-opcodes/src/UnresStuff.java @@ -0,0 +1,22 @@ +/* + * Unresolved classes / fields / methods in a resolved class. + * + * "happy" version. + */ + +public class UnresStuff { + public int instField; + + public static int staticField; + + public double wideInstField; + public static double wideStaticField; + + public void virtualMethod() { + System.out.println("unres!"); + } + + public static void staticMethod() { + System.out.println("unres!"); + } +} diff --git a/test/003-omnibus-opcodes/src/UnresTest1.java b/test/003-omnibus-opcodes/src/UnresTest1.java new file mode 100644 index 0000000..5a80a7a --- /dev/null +++ b/test/003-omnibus-opcodes/src/UnresTest1.java @@ -0,0 +1,80 @@ +/* + * Test failure to resolve class members. + */ +class UnresTest1 { + public static void run() { + System.out.println("UnresTest1..."); + + UnresStuff stuff = new UnresStuff(); + try { + int x = stuff.instField; + assert(false); + } catch (NoSuchFieldError nsfe) { + // good + } + try { // hit the same one a second time + int x = stuff.instField; + assert(false); + } catch (NoSuchFieldError nsfe) { + // good + } + try { + stuff.instField = 5; + assert(false); + } catch (NoSuchFieldError nsfe) { + // good + } + + try { + double d = stuff.wideInstField; + assert(false); + } catch (NoSuchFieldError nsfe) { + // good + } + try { + stuff.wideInstField = 0.0; + assert(false); + } catch (NoSuchFieldError nsfe) { + // good + } + + try { + int y = UnresStuff.staticField; + assert(false); + } catch (NoSuchFieldError nsfe) { + // good + } + try { + UnresStuff.staticField = 17; + assert(false); + } catch (NoSuchFieldError nsfe) { + // good + } + + try { + double d = UnresStuff.wideStaticField; + assert(false); + } catch (NoSuchFieldError nsfe) { + // good + } + try { + UnresStuff.wideStaticField = 1.0; + assert(false); + } catch (NoSuchFieldError nsfe) { + // good + } + + try { + stuff.virtualMethod(); + assert(false); + } catch (NoSuchMethodError nsfe) { + // good + } + try { + UnresStuff.staticMethod(); + assert(false); + } catch (NoSuchMethodError nsfe) { + // good + } + } +} diff --git a/test/003-omnibus-opcodes/src/UnresTest2.java b/test/003-omnibus-opcodes/src/UnresTest2.java new file mode 100644 index 0000000..768be8f --- /dev/null +++ b/test/003-omnibus-opcodes/src/UnresTest2.java @@ -0,0 +1,49 @@ +/* + * Test failure to resolve classes. + */ +class UnresTest2 { + /* + * Try check-cast and instance-of. + */ + static boolean checkCasts(Object obj) { + boolean foo = false; + + try { + UnresClass un = (UnresClass) obj; + assert(false); + } catch (NoClassDefFoundError ncdfe) { + // good + } + try { + foo = obj instanceof UnresClass; + assert(false); + } catch (NoClassDefFoundError ncdfe) { + // good + } + + return foo; + } + + public static void run() { + System.out.println("UnresTest2..."); + UnresClass un; + UnresStuff stuff = new UnresStuff(); + + try { + un = new UnresClass(); + assert(false); + } catch (NoClassDefFoundError ncdfe) { + // good + } + + try { + UnresClass[] uar = new UnresClass[3]; + assert(false); + } catch (NoClassDefFoundError ncdfe) { + // good + } + + checkCasts(stuff); + System.out.println("UnresTest2 done"); + } +} diff --git a/test/003-omnibus-opcodes/src2/UnresStuff.java b/test/003-omnibus-opcodes/src2/UnresStuff.java new file mode 100644 index 0000000..56f43af --- /dev/null +++ b/test/003-omnibus-opcodes/src2/UnresStuff.java @@ -0,0 +1,9 @@ +/* + * Unresolved classes / fields / methods in a resolved class. + * + * "happy" version. + */ + +public class UnresStuff { + public int x; +} |