summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/FAQ.html285
-rw-r--r--docs/GPL.html406
-rw-r--r--docs/GPL_exception.html54
-rw-r--r--docs/acknowledgements.html89
-rw-r--r--docs/alternatives.html760
-rw-r--r--docs/android_shades.pngbin2726 -> 0 bytes
-rw-r--r--docs/checkmark.gifbin63 -> 0 bytes
-rw-r--r--docs/dexguard.pngbin5331 -> 0 bytes
-rw-r--r--docs/downloads.html754
-rw-r--r--docs/drop1.gifbin803 -> 0 bytes
-rw-r--r--docs/drop2.gifbin620 -> 0 bytes
-rw-r--r--docs/drop3.gifbin175 -> 0 bytes
-rw-r--r--docs/favicon.icobin7406 -> 0 bytes
-rw-r--r--docs/feedback.html119
-rw-r--r--docs/index.html96
-rw-r--r--docs/license.html60
-rw-r--r--docs/main.html106
-rw-r--r--docs/manual/android_small.pngbin1106 -> 0 bytes
-rw-r--r--docs/manual/ant.html661
-rw-r--r--docs/manual/attention.gifbin896 -> 0 bytes
-rw-r--r--docs/manual/attributes.html217
-rw-r--r--docs/manual/examples.html1620
-rw-r--r--docs/manual/gradle.html561
-rw-r--r--docs/manual/gui.html483
-rw-r--r--docs/manual/index.html41
-rw-r--r--docs/manual/introduction.html173
-rw-r--r--docs/manual/limitations.html70
-rw-r--r--docs/manual/optimizations.html202
-rw-r--r--docs/manual/refcard.html492
-rw-r--r--docs/manual/retrace/examples.html346
-rw-r--r--docs/manual/retrace/index.html26
-rw-r--r--docs/manual/retrace/introduction.html80
-rw-r--r--docs/manual/retrace/usage.html129
-rw-r--r--docs/manual/sections.html54
-rw-r--r--docs/manual/style.css139
-rw-r--r--docs/manual/troubleshooting.html933
-rw-r--r--docs/manual/usage.html1271
-rw-r--r--docs/manual/wtk.html71
-rw-r--r--docs/proguard.appdata.xml32
-rw-r--r--docs/quality.html57
-rw-r--r--docs/results.html170
-rw-r--r--docs/saikoalogo.pngbin2901 -> 0 bytes
-rw-r--r--docs/screenshot_console.gifbin18930 -> 0 bytes
-rw-r--r--docs/screenshot_console_small.gifbin19730 -> 0 bytes
-rw-r--r--docs/screenshot_gui1.gifbin42755 -> 0 bytes
-rw-r--r--docs/screenshot_gui2.gifbin36887 -> 0 bytes
-rw-r--r--docs/screenshot_gui3.gifbin37080 -> 0 bytes
-rw-r--r--docs/screenshot_gui4.gifbin40769 -> 0 bytes
-rw-r--r--docs/screenshot_gui5.gifbin35909 -> 0 bytes
-rw-r--r--docs/screenshot_gui6.gifbin37123 -> 0 bytes
-rw-r--r--docs/screenshot_gui7.gifbin41922 -> 0 bytes
-rw-r--r--docs/screenshot_gui8.gifbin31454 -> 0 bytes
-rw-r--r--docs/screenshots.html68
-rw-r--r--docs/screenshots_gui_small.gifbin161022 -> 0 bytes
-rw-r--r--docs/sections.html49
-rw-r--r--docs/sflogo.pngbin469 -> 0 bytes
-rw-r--r--docs/steel.gifbin2759 -> 0 bytes
-rw-r--r--docs/style.css234
-rw-r--r--docs/testimonials.html134
-rw-r--r--docs/title.gifbin2613 -> 0 bytes
-rw-r--r--docs/title.html17
61 files changed, 0 insertions, 11059 deletions
diff --git a/docs/FAQ.html b/docs/FAQ.html
deleted file mode 100644
index 62ebf7b..0000000
--- a/docs/FAQ.html
+++ /dev/null
@@ -1,285 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard FAQ</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="index.html#FAQ.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="index.html#FAQ.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Frequently Asked Questions</h2>
-
-<h3>Contents</h3>
-
-<ol>
-<li><a href="#shrinking">What is shrinking?</a></li>
-<li><a href="#obfuscation">What is obfuscation?</a></li>
-<li><a href="#preverification">What is preverification?</a></li>
-<li><a href="#optimization">What kind of optimizations does <b>ProGuard</b>
- support?</a></li>
-<li><a href="#commercial">Can I use <b>ProGuard</b> to process my commercial
- application?</a></li>
-<li><a href="#jdk1.4">Does <b>ProGuard</b> work with Java 2, 5, ..., 8?</a></li>
-<li><a href="#jme">Does <b>ProGuard</b> work with Java Micro Edition?</a></li>
-<li><a href="#android">Does <b>ProGuard</b> work for Google Android
- code?</a></li>
-<li><a href="#blackberry">Does <b>ProGuard</b> work for Blackberry
- code?</a></li>
-<li><a href="#ant">Does <b>ProGuard</b> have support for Ant?</a></li>
-<li><a href="#gradle">Does <b>ProGuard</b> have support for Gradle?</a></li>
-<li><a href="#maven">Does <b>ProGuard</b> have support for Maven?</a></li>
-<li><a href="#gui">Does <b>ProGuard</b> come with a GUI?</a></li>
-<li><a href="#forname">Does <b>ProGuard</b> handle <code>Class.forName</code>
- calls?</a></li>
-<li><a href="#resource">Does <b>ProGuard</b> handle resource files?</a></li>
-<li><a href="#encrypt">Does <b>ProGuard</b> encrypt string constants?</a></li>
-<li><a href="#flow">Does <b>ProGuard</b> perform control flow
- obfuscation?</a></li>
-<li><a href="#incremental">Does <b>ProGuard</b> support incremental
- obfuscation?</a></li>
-<li><a href="#keywords">Can <b>ProGuard</b> obfuscate using reserved
- keywords?</a></li>
-<li><a href="#stacktrace">Can <b>ProGuard</b> reconstruct obfuscated stack
- traces?</a></li>
-</ol>
-
-<h3><a name="shrinking">What is shrinking?</a></h3>
-
-Java source code (.java files) is typically compiled to bytecode (.class
-files). Bytecode is more compact than Java source code, but it may still
-contain a lot of unused code, especially if it includes program libraries.
-Shrinking programs such as <b>ProGuard</b> can analyze bytecode and remove
-unused classes, fields, and methods. The program remains functionally
-equivalent, including the information given in exception stack traces.
-
-<h3><a name="obfuscation">What is obfuscation?</a></h3>
-
-By default, compiled bytecode still contains a lot of debugging information:
-source file names, line numbers, field names, method names, argument names,
-variable names, etc. This information makes it straightforward to decompile
-the bytecode and reverse-engineer entire programs. Sometimes, this is not
-desirable. Obfuscators such as <b>ProGuard</b> can remove the debugging
-information and replace all names by meaningless character sequences, making
-it much harder to reverse-engineer the code. It further compacts the code as a
-bonus. The program remains functionally equivalent, except for the class
-names, method names, and line numbers given in exception stack traces.
-
-<h3><a name="preverification">What is preverification?</a></h3>
-
-When loading class files, the class loader performs some sophisticated
-verification of the byte code. This analysis makes sure the code can't
-accidentally or intentionally break out of the sandbox of the virtual machine.
-Java Micro Edition and Java 6 introduced split verification. This means that
-the JME preverifier and the Java 6 compiler add preverification information to
-the class files (StackMap and StackMapTable attributes, respectively), in order
-to simplify the actual verification step for the class loader. Class files can
-then be loaded faster and in a more memory-efficient way. <b>ProGuard</b> can
-perform the preverification step too, for instance allowing to retarget older
-class files at Java 6.
-
-<h3><a name="optimization">What kind of optimizations does <b>ProGuard</b> support?</a></h3>
-
-Apart from removing unused classes, fields, and methods in the shrinking step,
-<b>ProGuard</b> can also perform optimizations at the bytecode level, inside
-and across methods. Thanks to techniques like control flow analysis, data flow
-analysis, partial evaluation, static single assignment, global value numbering,
-and liveness analysis, <b>ProGuard</b> can:
-
-<ul>
-<li>Evaluate constant expressions.</li>
-<li>Remove unnecessary field accesses and method calls.</li>
-<li>Remove unnecessary branches.</li>
-<li>Remove unnecessary comparisons and instanceof tests.</li>
-<li>Remove unused code blocks.</li>
-<li>Merge identical code blocks.</li>
-<li>Reduce variable allocation.</li>
-<li>Remove write-only fields and unused method parameters.</li>
-<li>Inline constant fields, method parameters, and return values.</li>
-<li>Inline methods that are short or only called once.</li>
-<li>Simplify tail recursion calls.</li>
-<li>Merge classes and interfaces.</li>
-<li>Make methods private, static, and final when possible.</li>
-<li>Make classes static and final when possible.</li>
-<li>Replace interfaces that have single implementations.</li>
-<li>Perform over 200 peephole optimizations, like replacing ...*2 by
- ...&lt;&lt;1.</li>
-<li>Optionally remove logging code.</li>
-</ul>
-The positive effects of these optimizations will depend on your code and on
-the virtual machine on which the code is executed. Simple virtual machines may
-benefit more than advanced virtual machines with sophisticated JIT compilers.
-At the very least, your bytecode may become a bit smaller.
-<p>
-Some notable optimizations that aren't supported yet:
-<ul>
-<li>Moving constant expressions out of loops.</li>
-<li>Optimizations that require escape analysis
- (<a href="http://www.saikoa.com/dexguard" target="_top">DexGuard</a>
- does).</li>
-</ul>
-
-<h3><a name="commercial">Can I use <b>ProGuard</b> to process my commercial application?</a></h3>
-
-Yes, you can. <b>ProGuard</b> itself is distributed under the GPL, but this
-doesn't affect the programs that you process. Your code remains yours, and
-its license can remain the same.
-
-<h3><a name="jdk1.4">Does <b>ProGuard</b> work with Java 2, 5, ..., 8?</a></h3>
-
-Yes, <b>ProGuard</b> supports all JDKs from 1.1 up to and including 8.0. Java
-2 introduced some small differences in the class file format. Java 5 added
-attributes for generics and for annotations. Java 6 introduced optional
-preverification attributes. Java 7 made preverification obligatory and
-introduced support for dynamic languages. Java 8 added more attributes and
-default methods. <b>ProGuard</b> handles all versions correctly.
-
-<h3><a name="jme">Does <b>ProGuard</b> work with Java Micro Edition?</a></h3>
-
-Yes. <b>ProGuard</b> itself runs in Java Standard Edition, but you can freely
-specify the run-time environment at which your programs are targeted,
-including Java Micro Edition. <b>ProGuard</b> then also performs the required
-preverification, producing more compact results than the traditional external
-preverifier.
-<p>
-<b>ProGuard</b> also comes with an obfuscator plug-in for the JME Wireless
-Toolkit.
-
-<h3><a name="android">Does <b>ProGuard</b> work for Google Android code?</a></h3>
-
-Yes. Google's <code>dx</code> compiler converts ordinary jar files into files
-that run on Android devices. By preprocessing the original jar files,
-<b>ProGuard</b> can significantly reduce the file sizes and boost the run-time
-performance of the code. It is distributed as part of the Android SDK.
-<a href="http://www.saikoa.com/dexguard" target="_top"><b>DexGuard</b></a>,
-<b>ProGuard</b>'s closed-source sibling for Android, offers additional
-optimizations and more application protection.
-
-<h3><a name="blackberry">Does <b>ProGuard</b> work for Blackberry code?</a></h3>
-
-It should. RIM's proprietary <code>rapc</code> compiler converts ordinary JME
-jar files into cod files that run on Blackberry devices. The compiler performs
-quite a few optimizations, but preprocessing the jar files with
-<b>ProGuard</b> can generally still reduce the final code size by a few
-percent. However, the <code>rapc</code> compiler also seems to contain some
-bugs. It sometimes fails on obfuscated code that is valid and accepted by other
-JME tools and VMs. Your mileage may therefore vary.
-
-<h3><a name="ant">Does <b>ProGuard</b> have support for Ant?</a></h3>
-
-Yes. <b>ProGuard</b> provides an Ant task, so that it integrates seamlessly
-into your Ant build process. You can still use configurations in
-<b>ProGuard</b>'s own readable format. Alternatively, if you prefer XML, you
-can specify the equivalent XML configuration.
-
-<h3><a name="gradle">Does <b>ProGuard</b> have support for Gradle?</a></h3>
-
-Yes. <b>ProGuard</b> also provides a Gradle task, so that it integrates into
-your Gradle build process. You can specify configurations in
-<b>ProGuard</b>'s own format or embedded in the Groovy configuration.
-
-<h3><a name="maven">Does <b>ProGuard</b> have support for Maven?</a></h3>
-
-<b>ProGuard</b>'s jar files are also distributed as artefacts from
-the <a href="http://search.maven.org/#search|ga|1|g:%22net.sf.proguard%22"
-target="other">Maven Central</a> repository. There are some third-party
-plugins that support <b>ProGuard</b>, such as the
-<a href="http://code.google.com/p/maven-android-plugin/"
-target="other">android-maven-plugin</a> and the
-<a href="http://mavenproguard.sourceforge.net/" target="other">IDFC Maven
-ProGuard Plug-in</a>.
-<a href="http://www.saikoa.com/dexguard" target="_top"><b>DexGuard</b></a>
-also comes with a Maven plugin.
-
-<h3><a name="gui">Does <b>ProGuard</b> come with a GUI?</a></h3>
-
-Yes. First of all, <b>ProGuard</b> is perfectly usable as a command-line tool
-that can easily be integrated into any automatic build process. For casual
-users, there's also a graphical user interface that simplifies creating,
-loading, editing, executing, and saving ProGuard configurations.
-
-<h3><a name="forname">Does <b>ProGuard</b> handle <code>Class.forName</code> calls?</a></h3>
-
-Yes. <b>ProGuard</b> automatically handles constructs like
-<code>Class.forName("SomeClass")</code> and <code>SomeClass.class</code>. The
-referenced classes are preserved in the shrinking phase, and the string
-arguments are properly replaced in the obfuscation phase.
-<p>
-With variable string arguments, it's generally not possible to determine their
-possible values. They might be read from a configuration file, for instance.
-However, <b>ProGuard</b> will note a number of constructs like
-"<code>(SomeClass)Class.forName(variable).newInstance()</code>". These might
-be an indication that the class or interface <code>SomeClass</code> and/or its
-implementations may need to be preserved. The developer can adapt his
-configuration accordingly.
-
-<h3><a name="resource">Does <b>ProGuard</b> handle resource files?</a></h3>
-
-Yes. <b>ProGuard</b> copies all non-class resource files, optionally adapting
-their names and their contents to the obfuscation that has been applied.
-
-<h3><a name="encrypt">Does <b>ProGuard</b> encrypt string constants?</a></h3>
-
-No. String encryption in program code has to be perfectly reversible by
-definition, so it only improves the obfuscation level. It increases the
-footprint of the code. However, by popular demand, <b>ProGuard</b>'s
-closed-source sibling for Android, <a href="http://www.saikoa.com/dexguard"
-target="_top"><b>DexGuard</b></a>, does provide string encryption, along with
-more protection techniques against static and dynamic analysis.
-
-<h3><a name="flow">Does <b>ProGuard</b> perform flow obfuscation?</a></h3>
-
-Not explicitly. Control flow obfuscation injects additional branches into the
-bytecode, in an attempt to fool decompilers. <b>ProGuard</b> does not do this,
-in order to avoid any negative effects on performance and size. However, the
-optimization step often already restructures the code to the point where most
-decompilers get confused.
-
-<h3><a name="incremental">Does <b>ProGuard</b> support incremental obfuscation?</a></h3>
-
-Yes. This feature allows you to specify a previous obfuscation mapping file in
-a new obfuscation step, in order to produce add-ons or patches for obfuscated
-code.
-
-<h3><a name="keywords">Can <b>ProGuard</b> obfuscate using reserved keywords?</a></h3>
-
-Yes. You can specify your own obfuscation dictionary, such as a list of
-reserved key words, identifiers with foreign characters, random source files,
-or a text by Shakespeare. Note that this hardly improves the obfuscation.
-Decent decompilers can automatically replace reserved keywords, and the effect
-can be undone fairly easily, by obfuscating again with simpler names.
-
-<h3><a name="stacktrace">Can <b>ProGuard</b> reconstruct obfuscated stack traces?</a></h3>
-
-Yes. <b>ProGuard</b> comes with a companion tool, <b>ReTrace</b>, that can
-'de-obfuscate' stack traces produced by obfuscated applications. The
-reconstruction is based on the mapping file that <b>ProGuard</b> can write
-out. If line numbers have been obfuscated away, a list of alternative method
-names is presented for each obfuscated method name that has an ambiguous
-reverse mapping. Please refer to the <a href="manual/index.html">ProGuard User
-Manual</a> for more details.
-<p>
-Erik Andr&eacute; at Badoo has written a
-<a href="https://techblog.badoo.com/blog/2014/10/08/deobfuscating-hprof-memory-dumps/"
-target="other">tool to de-obfuscate HPROF memory dumps</a>.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/GPL.html b/docs/GPL.html
deleted file mode 100644
index c7a2458..0000000
--- a/docs/GPL.html
+++ /dev/null
@@ -1,406 +0,0 @@
-<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<HTML>
-<HEAD>
-<TITLE>GNU General Public License</TITLE>
-</HEAD>
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" VLINK="#9900DD">
-<H1>GNU General Public License</H1>
-<H2>Table of Contents</H2>
-<UL>
-
- <LI><A NAME="TOC1" HREF="#SEC1">GNU GENERAL PUBLIC LICENSE</A>
-<UL>
-<LI><A NAME="TOC2" HREF="#SEC2">Preamble</A>
-<LI><A NAME="TOC3" HREF="#SEC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A>
-
-</UL>
-</UL>
-
-<P>
-
-<HR>
-
-<P>
-
-
-
-<H2><A NAME="SEC1" HREF="#TOC1">GNU GENERAL PUBLIC LICENSE</A></H2>
-<P>
-Version 2, June 1991
-
-</P>
-
-<PRE>
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-</PRE>
-
-
-
-<H2><A NAME="SEC2" HREF="#TOC2">Preamble</A></H2>
-
-<P>
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
-</P>
-<P>
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-</P>
-<P>
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-</P>
-<P>
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
-</P>
-<P>
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-</P>
-<P>
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-</P>
-<P>
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-</P>
-<P>
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-</P>
-
-
-<H2><A NAME="SEC3" HREF="#TOC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A></H2>
-
-
-<P>
-
-<STRONG>0.</STRONG>
- This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-<P>
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-<P>
-
-<STRONG>1.</STRONG>
- You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-<P>
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-<P>
-
-<STRONG>2.</STRONG>
- You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-<P>
-
-<UL>
-
-<LI><STRONG>a)</STRONG>
- You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
-<P>
-<LI><STRONG>b)</STRONG>
- You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
-<P>
-<LI><STRONG>c)</STRONG>
- If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-</UL>
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-<P>
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-<P>
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-<P>
-
-<STRONG>3.</STRONG>
- You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-
-<!-- we use this doubled UL to get the sub-sections indented, -->
-<!-- while making the bullets as unobvious as possible. -->
-<UL>
-
-<LI><STRONG>a)</STRONG>
- Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
-<P>
-<LI><STRONG>b)</STRONG>
- Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
-<P>
-<LI><STRONG>c)</STRONG>
- Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-</UL>
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-<P>
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-<P>
-
-<STRONG>4.</STRONG>
- You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-<P>
-
-<STRONG>5.</STRONG>
- You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-<P>
-
-<STRONG>6.</STRONG>
- Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-<P>
-
-<STRONG>7.</STRONG>
- If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-<P>
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-<P>
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-<P>
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-<P>
-
-<STRONG>8.</STRONG>
- If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-<P>
-
-<STRONG>9.</STRONG>
- The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-<P>
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-<P>
-
-
-<STRONG>10.</STRONG>
- If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-
-
-<P><STRONG>NO WARRANTY</STRONG></P>
-
-<P>
-
-<STRONG>11.</STRONG>
- BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-<P>
-
-<STRONG>12.</STRONG>
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-<P>
-
-
-<H2>END OF TERMS AND CONDITIONS</H2>
-</BODY>
-</HTML>
diff --git a/docs/GPL_exception.html b/docs/GPL_exception.html
deleted file mode 100644
index 8cbe0cd..0000000
--- a/docs/GPL_exception.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<HTML>
-<HEAD>
-<TITLE>Special Exception to the GNU General Public License</TITLE>
-</HEAD>
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" VLINK="#9900DD">
-<H1>Special Exception to the GNU General Public License</H1>
-
-<P>
-Copyright &copy; 2002-2014 Eric Lafortune
-</P>
-
-<P>
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-</P>
-
-<P>
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-</P>
-
-<P>
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-</P>
-
-<P>
-In addition, as a special exception, Eric Lafortune gives permission to link
-the code of this program with the following stand-alone applications:
-<ul>
-<li>Apache Ant,</li>
-<li>Apache Maven,</li>
-<li>the Google Android SDK,</li>
-<li>the Eclipse ProGuardDT GUI,</li>
-<li>the EclipseME JME IDE,</li>
-<li>the Oracle NetBeans Java IDE,</li>
-<li>the Oracle JME Wireless Toolkit,</li>
-<li>the Simple Build Tool for Scala (and its scripts), and</li>
-<li>the Sanaware Tools.</li>
-</ul>
-and distribute linked combinations including the two. You must obey the GNU
-General Public License in all respects for all of the code used other than
-these programs. If you modify this file, you may extend this exception to your
-version of the file, but you are not obligated to do so. If you do not wish to
-do so, delete this exception statement from your version.
-</P>
-
-</BODY>
-</HTML>
diff --git a/docs/acknowledgements.html b/docs/acknowledgements.html
deleted file mode 100644
index 9f7d3b8..0000000
--- a/docs/acknowledgements.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Acknowledgements</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="index.html#acknowledgements.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="index.html#acknowledgements.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Acknowledgements</h2>
-
-The first versions of <b>ProGuard</b> grew out of <b>RetroGuard</b>, which its
-author Mark Welsh kindly made available under the GNU Lesser General Public
-License. RetroGuard is a very nice piece of code, but it only performed
-obfuscation. I started from the class file parsing code and wrote my own
-shrinker, optimizer, obfuscator, and preverifier. As of version 4.0, all of the
-original code has been rewritten, so the most obvious remaining similarity are
-the program names.
-<p>
-
-Dirk Schnelle has contributed and maintained the first versions of the Ant
-task. I have rewritten the implementation for version 3.0, but the XML schema
-is still based on his work.
-<p>
-
-Marcel Patzlaff has initiated a series of artifacts in the Maven Central
-repository. I am now maintaining them as part of the official builds.
-<p>
-
-Many other people have expressed their enthusiasm and have chimed in with
-interesting ideas, bug reports, and bug fixes: Thorsten Heit, Oliver Retzl,
-Jonathan Knudsen, Tarcisio Camara, Bob Drury, Dave Jarvis, Marc Chapman, Dave
-Morehouse, Richard Osbaldeston, Peter Hawkins, Mark Sherington, David Sitsky,
-James Manning, Ptolemy Oberin, Frank-Michael Moser, QZ Shines, Thomas Singer,
-Michele Puccini, Roman Bednarek, Natalia Pujol, Daniel Sj&ouml;blom, Jan
-Filipsky, Charles Smith, Gerrit Telkamp, Noel Grandin, Torbj&ouml;rn
-S&ouml;derstedt, Clemens Eisserer, Clark Bassett, Eduard Welch, Dawid Weiss,
-Andrew Wilson, Sean Owen, Niels Gron, Ishan Mehta, Steven Adams, Xavier Kral,
-Stefan Martin, Toby Reyelts, Bernhard Eder, Manfred Moser, Marco Bl&uuml;mel,
-David Reiss, Roy Williams,
-and many more. Thanks! Your feedback has been invaluable.
-<p>
-
-<a href="http://www.saikoa.com/" target="_top">Saikoa</a> is providing the
-financial resources for this project. At Saikoa, we're also developing
-ProGuard's sibling for Android,
-<a href="http://www.saikoa.com/dexguard" target="_top">DexGuard</a>.
-<p>
-
-<a href="http://www.sky.com/" rel="nofollow" target="other">British Sky</a>
-has kindly sponsored the optimization of <i>enum</i> types.
-<p>
-
-<a href="http://sourceforge.net/projects/proguard/"
-target="other">SourceForge</a> is providing the resources for hosting this
-project and many other projects.
-<p>
-
-<a href="http://www.sonatype.com/" target="other">Sonatype</a> and
-the <a href="http://search.maven.org/#search|ga|1|g:%22net.sf.proguard%22"
-target="other">Maven Central</a> repository are hosting the Maven artifacts.
-<p>
-
-The code and these web pages were written using Oracle/Sun's JDKs, Linux,
-IntelliJ IDEA, GNU emacs, bash, sed, awk, and a whole host of other tools that
-continue to make programming interesting.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-
-</body>
-</html>
diff --git a/docs/alternatives.html b/docs/alternatives.html
deleted file mode 100644
index f4f78b6..0000000
--- a/docs/alternatives.html
+++ /dev/null
@@ -1,760 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Alternatives</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="index.html#alternatives.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="index.html#alternatives.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Alternatives</h2>
-
-There are quite a few Java class file shrinkers, optimizers, obfuscators, and
-preverifiers out there. Users of <b>ProGuard</b> tell me it easily compares
-with the best of them. However, you may want to check that out yourself.
-<p>
-This is a list of the programs of which I'm aware. Obviously, I've never
-personally tested all of them. Many programs, even commercial ones, have been
-abandoned. Please drop me a note if you know of any other shrinkers,
-optimizers, obfuscators, or preverifiers, or if some information provided
-below is incorrect.
-<p>
-
-<table>
-
-<tr>
-<th>Author/Company</th>
-<th>Program</th>
-<th>Shrink.</th>
-<th>Optim.</th>
-<th>Obfusc.</th>
-<th>Preverif.</th>
-<th>License</th>
-</tr>
-
-<tr>
-<td><a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a></td>
-<td><a target="_top" href="http://proguard.sourceforge.net/">ProGuard</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td>Free (GPL)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.informatik.uni-oldenburg.de/leute/hoenicke.html">Jochen Hoenicke</a></td>
-<td><a target="other" href="http://jode.sourceforge.net/">Jode</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Free (GPL)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.cs.cornell.edu/nystrom/">Nate Nystrom</a></td>
-<td><a target="other" href="http://www.cs.purdue.edu/homes/hosking/bloat/">Bloat</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>Free</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://sourceforge.net/users/hchacha/">Hidetoshi Ohuchi</a></td>
-<td><a target="other" href="http://jarg.sourceforge.net/">Jarg</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Free (BSD)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.yworks.com/">yWorks</a></td>
-<td><a target="other" href="http://www.yworks.com/en/products_yguard_about.htm">yGuard</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Free (no source)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://mojo.codehaus.org/">Mojo</a></td>
-<td><a target="other" href="http://mojo.codehaus.org/minijar-maven-plugin/">Minijar</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>Free (Apache)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.riggshill.com/">RiggsHill Software</a></td>
-<td><a target="other" href="http://genjar.sourceforge.net/">GenJar</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>Free (Apache)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://ant.apache.org/">Apache</a></td>
-<td><a target="other" href="http://ant.apache.org/manual/Types/classfileset.html">Ant Classfileset</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>Free (Apache)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.celton.mobi/">Carsten Elton S&oslash;rensen</a></td>
-<td><a target="other" href="http://code.google.com/p/treeshaker/">Treeshaker</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>Free (Apache)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.ucdetector.org/">J&ouml;rg Spieler</a></td>
-<td><a target="other" href="http://www.ucdetector.org/">UCDetector</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>Free (EPL)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.curious-creature.org/">Romain Guy</a></td>
-<td><a target="other" href="http://www.jroller.com/gfx/entry/get_what_you_need_from">Harvester</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>Free (BSD)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://java.net/projects/dcd/">Emeric Vernat</a></td>
-<td><a target="other" href="http://java.net/projects/dcd/">DCD</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>Free (LGPL)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://sadun-util.sourceforge.net/">Cristiano Sadun</a></td>
-<td><a target="other" href="http://sadun-util.sourceforge.net/pack.html">Pack</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>Free (LGPL)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.sable.mcgill.ca/">Sable</a></td>
-<td><a target="other" href="http://www.sable.mcgill.ca/soot/">Soot</a></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>Free (LGPL)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.sable.mcgill.ca/">Sable</a></td>
-<td><a target="other" href="http://www.sable.mcgill.ca/JBCO/">JBCO</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Free (LGPL)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://classencrypt.sourceforge.net/">Jeffrey Wheaton</a></td>
-<td><a target="other" href="http://classencrypt.sourceforge.net/">ClassEncrypt</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Free (GPL)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://sourceforge.net/users/glurk/">Thorsten Heit</a></td>
-<td><a target="other" href="http://sourceforge.net/projects/javaguard/">JavaGuard</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Free (LGPL)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://mwobfu.sourceforge.net/">Patrick Mueller</a></td>
-<td><a target="other" href="http://mwobfu.sourceforge.net/">Mwobfu</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Free (GPL)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.bebbosoft.de/">BebboSoft</a></td>
-<td><a target="other" href="http://www.bebbosoft.de/#java/mug/index.wiki">Bb_mug</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Free (no source)</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://github.com/v6ak">V&iacute;t &Scaron;est&aacute;k</a></td>
-<td><a target="other" href="http://github.com/v6ak/Preverifier/">Preverifier</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td>Free (EPL)</td>
-</tr>
-
-<tr>
-<td><a target="_top" href="http://www.saikoa.com/">Saikoa</a></td>
-<td><a target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.preemptive.com/">PreEmptive</a></td>
-<td><a target="other" href="http://www.preemptive.com/products/dasho/index.html">DashOPro</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.zelix.com/">Zelix</a></td>
-<td><a target="other" href="http://www.zelix.com/klassmaster/index.html">KlassMaster</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.s-cradle.com/english/index.html">Sophia Cradle</a></td>
-<td><a target="other" href="http://www.s-cradle.com/english/products/sophiacompress_java/index.html">SophiaCompress</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://shield4j.com/">Eduardo Coca</a></td>
-<td><a target="other" href="http://shield4j.com/">Shield4J</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.e-t.com/">Eastridge Technology</a></td>
-<td><a target="other" href="http://www.e-t.com/jshrink.html">Jshrink</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.innaworks.com/">Innaworks</a></td>
-<td><a target="other" href="http://www.innaworks.com/mBooster">mBooster</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.uni-vologda.ac.ru/~c3c/">Sergey Sverdlov</a></td>
-<td><a target="other" href="http://www.uni-vologda.ac.ru/~c3c/jco/">J.Class Optimizer</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.smardec.com/">Smardec</a></td>
-<td><a target="other" href="http://www.allatori.com/">Allatori</a></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://cs.arizona.edu/">U. of Arizona</a></td>
-<td><a target="other" href="http://sandmark.cs.arizona.edu/">SandMark</a></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://zenofx.com/">Zenofx</a></td>
-<td><a target="other" href="http://zenofx.com/classguard/">ClassGuard</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.bisguard.com/">BIS Guard &amp; Co.</a></td>
-<td><a target="other" href="http://www.bisguard.com/">Java Antidecompiler</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.force5.com/">Force 5</a></td>
-<td><a target="other" href="http://www.force5.com/JCloak/ProductJCloak.html">JCloak</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.semdesigns.com/">Semantic Designs</a></td>
-<td><a target="other" href="http://www.semdesigns.com/Products/Obfuscators/JavaObfuscator.html">Obfuscator</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.duckware.com/">Duckware</a></td>
-<td><a target="other" href="http://www.duckware.com/jobfuscate/">Jobfuscate</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://secureteam.net/index.aspx">Secureteam</a></td>
-<td><a target="other" href="http://secureteam.net/Java-Obfuscator-Features.aspx">Jfuscator</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.arxan.com/">Arxan</a></td>
-<td><a target="other" href="http://www.arxan.com/products/desktop/guardit-for-java/">GuardIT</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial</td>
-</tr>
-
-<tr>
-<td><a target="other" rel="nofollow" href="http://www.chez.com/vasile/">Vasile Calmatui</a></td>
-<td><a target="other" href="http://www.chez.com/vasile/obfu/VasObfuLite.html">VasObfuLite</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Free</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.alphaworks.ibm.com/">IBM AlphaWorks</a></td>
-<td><a target="other" href="http://www.research.ibm.com/jax/">JAX</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>(discontinued)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.nq4.de/">NQ4</a></td>
-<td><a target="other" rel="nofollow" href="http://www.nq4.de/">Joga</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>(discontinued?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www-i2.informatik.rwth-aachen.de/~markusj/">Markus Jansen</a></td>
-<td><a target="other" rel="nofollow" href="http://www-i2.informatik.rwth-aachen.de/~markusj/jopt/">Jopt</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>(disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.geocities.com/CapeCanaveral/Hall/2334/resume.html">Alexander Shvets</a></td>
-<td><a target="other" rel="nofollow" href="http://www.geocities.com/CapeCanaveral/Hall/2334/Programs/cafebabe.html">CafeBabe</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>(disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://darcs.brianweb.net/">Brian Alliet</a></td>
-<td><a target="other" rel="nofollow" href="http://darcs.brianweb.net/gcclass/">Gcclass</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>(disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.cs.purdue.edu/homes/grothoff/">Christian Grothoff</a></td>
-<td><a target="other" rel="nofollow" href="http://www.ovmj.org/jamit/">Jamit</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>(disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.garret.ru/~knizhnik/">Konstantin Knizhnik</a></td>
-<td><a target="other" rel="nofollow" href="http://www.garret.ru/~knizhnik/javago/ReadMe.htm">JavaGO</a></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td>()disappeared?</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://donquixote.cafebabe.jp/">Haruaki Tamada</a></td>
-<td><a target="other" rel="nofollow" href="http://donquixote.cafebabe.jp/">DonQuixote</a></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>(disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.utdallas.edu/~gxz014000/">Bajie</a></td>
-<td><a target="other" rel="nofollow" href="http://www.utdallas.edu/~gxz014000/jcmp/">JCMP</a></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>(disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.elegant-software.com/">Elegant Software</a></td>
-<td><a target="other" rel="nofollow" href="http://www.elegant-software.com/software/jmangle/">JMangle</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>(disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.primenet.com/~ej">Eron Jokipii</a></td>
-<td><a target="other" rel="nofollow" href="http://www.primenet.com/~ej">Jobe</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>(disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://jrc.krdl.org.sg/">JRC</a></td>
-<td><a target="other" rel="nofollow" href="http://jrc.krdl.org.sg/decaf/">DeCaf</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>(disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.drjava.de/">Dr. Java</a></td>
-<td><a target="other" rel="nofollow" href="http://www.drjava.de/obfuscator/">Marvin Obfuscator</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>(disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.ibm.com/">IBM</a></td>
-<td><a target="other" rel="nofollow" href="http://www-306.ibm.com/software/wireless/wsdd/">WSDD</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (discontinued?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.s5systems.com/">S5 Systems</a></td>
-<td><a target="other" rel="nofollow" href="http://www.s5systems.com/jPresto.htm">jPresto</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (discontinued?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.plumbdesign.com/">Plumb Design</a></td>
-<td><a target="other" rel="nofollow" href="http://www.condensity.com/">Condensity</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (discontinued)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.4thpass.com/">4th Pass</a></td>
-<td><a target="other" rel="nofollow" href="http://www.4thpass.com/">SourceGuard</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (discontinued?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.codingart.com/">CodingArt</a></td>
-<td><a target="other" rel="nofollow" href="http://www.codingart.com/codeshield.html">CodeShield</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (discontinued?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.software4j.com/">Software4j</a></td>
-<td><a target="other" rel="nofollow" href="http://www.software4j.com/obfuscate4j/">Obfuscate4j</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (discontinued?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.jammconsulting.com/">JAMM Consulting</a></td>
-<td><a target="other" rel="nofollow" href="http://www.jammconsulting.com/jamm/servlet/com.jammconsulting.servlet.JAMMServlet?pageId=ObfuscateProPage">ObfuscatePro</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (discontinued?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.jdevelop.com/">JDevelop</a></td>
-<td><a target="other" rel="nofollow" href="http://www.jdevelop.com/best-java-obfuscator.html">JSCO</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (discontinued?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.4fang.net/">4Fang</a></td>
-<td><a target="other" rel="nofollow" href="http://www.4fang.net/jmix/">JMix</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (discontinued?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.retrologic.com/">RetroLogic</a></td>
-<td><a target="other" rel="nofollow" href="http://www.retrologic.com/">RetroGuard</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.helseth.com/">Helseth</a></td>
-<td><a target="other" rel="nofollow" href="http://www.helseth.com/HJO.htm">JObfuscator</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.vegatech.com/">Vega Technologies</a></td>
-<td><a target="other" rel="nofollow" href="http://www.vegatech.com/jzipper/">JZipper</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.leesw.com/">LeeSoftware</a></td>
-<td><a target="other" rel="nofollow" href="http://www.leesw.com/">Smokescreen Obfuscator</a></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.jproof.com/">JProof</a></td>
-<td><a target="other" rel="nofollow" href="http://www.jproof.com/">JProof</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.chainkey.com/">ChainKey</a></td>
-<td><a target="other" rel="nofollow" href="http://www.chainkey.com/en/jcp/">Java Code Protector</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.2lkit.com/">2LKit</a></td>
-<td><a target="other" rel="nofollow" href="http://www.2lkit.com/products/2LKitObf/index.htm">2LKit Obfuscator</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.wingsoft.com/">WingSoft</a></td>
-<td><a target="other" rel="nofollow" href="http://www.wingsoft.com/wingguard.html">WingGuard</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.sbktech.org/">HashJava</a></td>
-<td><a target="other" rel="nofollow" href="http://www.sbktech.org/">HashJava</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (disappeared?)</td>
-</tr>
-
-<tr class="disappeared">
-<td><a target="other" rel="nofollow" href="http://www.solutia.ro/">GITS</a></td>
-<td><a target="other" rel="nofollow" href="http://www.solutia.ro/pages/javadc/">Blurfuscator</a></td>
-<td align="center"><br /></td>
-<td align="center"><br /></td>
-<td align="center"><img src="checkmark.gif" width="11" height="11" alt="x" /></td>
-<td align="center"><br /></td>
-<td>Commercial (disappeared?)</td>
-</tr>
-
-</table>
-<p>
-All trademarks are property of their respective holders.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-
-</body>
-</html>
diff --git a/docs/android_shades.png b/docs/android_shades.png
deleted file mode 100644
index 96e54f0..0000000
--- a/docs/android_shades.png
+++ /dev/null
Binary files differ
diff --git a/docs/checkmark.gif b/docs/checkmark.gif
deleted file mode 100644
index 8afa677..0000000
--- a/docs/checkmark.gif
+++ /dev/null
Binary files differ
diff --git a/docs/dexguard.png b/docs/dexguard.png
deleted file mode 100644
index ed8f1f4..0000000
--- a/docs/dexguard.png
+++ /dev/null
Binary files differ
diff --git a/docs/downloads.html b/docs/downloads.html
deleted file mode 100644
index 37e865a..0000000
--- a/docs/downloads.html
+++ /dev/null
@@ -1,754 +0,0 @@
-
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Downloads</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="index.html#downloads.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="index.html#downloads.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Downloads</h2>
-
-<b>ProGuard</b> is distributed under the terms of the GNU General Public
-License. Please consult the <a href="license.html">license page</a> for more
-details.
-<p>
-<b>ProGuard</b> is written in Java, so it requires a Java Runtime Environment
- (JRE 1.5 or higher).
-<p>
-You can download the latest release (containing the program jars, the
-documentation that you're reading now, examples, and the source code) from this
-location:
-<p>
-<center><a href="http://sourceforge.net/projects/proguard/files/"
-target="other">Download section at SourceForge</a></center>
-<p>
-
-The <a href="http://sourceforge.net/projects/proguard/files/proguard/"
-target="other">proguard</a> section contains major releases and updates with
-sub-minor version numbers, for applying emergency fixes. The
-<a href="http://sourceforge.net/projects/proguard/files/proguard%20beta/"
-target="other">proguard beta</a> section contains beta releases. These include
-new features and any less urgent bug fixes collected since the previous
-release.
-<p>
-If you're still working with an older version of <b>ProGuard</b>, check out
-the summary of changes below, to see if you're missing something essential.
-Better look at the up-to-date <a
-href="http://proguard.sourceforge.net/downloads.html">on-line version</a> if
-you're reading a local copy of this page. Unless noted otherwise,
-<b>ProGuard</b> remains compatible across versions, so don't be afraid to
-update.
-<p>
-If you're only interested in individual jar files for your build process, you
-can also download them from the Maven Central repository, with GroupId
-<a href="http://search.maven.org/#search|ga|1|g:%22net.sf.proguard%22"
-target="other">net.sf.proguard</a> and ArtifactIds
-<a href="http://search.maven.org/#search|ga|1|a:%22proguard-parent%22"
-target="other">proguard-parent</a>,
-<a href="http://search.maven.org/#search|ga|1|a:%22proguard-base%22"
-target="other">proguard-base</a>,
-<a href="http://search.maven.org/#search|ga|1|a:%22proguard-gui%22"
-target="other">proguard-gui</a>,
-<a href="http://search.maven.org/#search|ga|1|a:%22proguard-anttask%22"
-target="other">proguard-anttask</a>,
-<a href="http://search.maven.org/#search|ga|1|a:%22proguard-gradle%22"
-target="other">proguard-gradle</a>,
-<a href="http://search.maven.org/#search|ga|1|a:%22proguard-wtk-plugin%22"
-target="other">proguard-wtk-plugin</a>, and
-<a href="http://search.maven.org/#search|ga|1|a:%22proguard-retrace%22"
-target="other">proguard-retrace</a>.
-
-<h3><div>Oct 2014</div> Version 5.1</h3>
-<ul>
-<li>Fixed processing of various kinds of closures in Java 8.
-<li>Fixed shrinking of generic signatures in classes and methods.
-<li>Fixed shrinking of debug information about generic local variable types.
-<li>Fixed optimization of default implementations in interfaces.
-<li>Fixed optimization of variable initializations.
-<li>Fixed obfuscation of internal class names in strings.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Aug 2014</div> Version 5.0</h3>
-<ul>
-<li>Added support for Java 8.
-<li>Added <code>-keep</code> modifier <code>includedescriptorclasses</code>.
-<li>Added automatic suggestions for keeping attributes.
-<li>Clearing preverification information when <code>-dontpreverify</code> is
- specified.
-<li>Extended optimization support for conservative optimization with java
- system property <code>optimize.conservatively</code>.
-<li>Fixed occasional preverification problem.
-<li>Fixed shrinking of generic class signatures.
-<li>Fixed shrinking of generic variable signatures.
-<li>Fixed analysis of unused parameters for bootstrap methods in library
- classes.
-<li>Fixed inlining problem of non-returning subroutines.
-<li>Fixed possible IllegalArgumentException and ArrayIndexOutOfBoundsException
- in enum simplification.
-<li>Fixed unnecessary notes about dynamic class instantiations with constant
- class names.
-<li>Fixed preverification of unnecessary casts of null values.
-<li>Fixed lazy resolution of output jars in Gradle task.
-<li>Fixed processing of synthetic code with alternative initializer invocations.
-<li>Improved handling of symbolic links in shell scripts.
-<li>Improved default path in Windows bat files.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Dec 2013</div> Version 4.11</h3>
-<ul>
-<li>Added simplification of basic enum types.
-<li>Added reading and writing of apk and aar archives.
-<li>Fixed criteria for class merging.
-<li>Fixed simplification of variable initializations.
-<li>Fixed simplification of redundant boolean variables.
-<li>Fixed optimization of unused stack entries in exception handlers.
-<li>Fixed correction of access flags after class merging, method inlining, and
- class repackaging.
-<li>Refined criterion for method inlining.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Jul 2013</div> Version 4.10</h3>
-<ul>
-<li>Made Gradle task resolve files lazily.
-<li>Enabled as-needed execution in Gradle task.
-<li>Using standard string interpolation for Gradle configuration.
-<li>Reduced log levels for console output in Gradle task.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Mar 2013</div> Version 4.9</h3>
-<ul>
-<li>Added Gradle task.
-<li>Added more peephole optimizations for strings.
-<li>Improved optimization of classes with static initializers.
-<li>Improved processing of finally blocks compiled with JDK 1.4 or older.
-<li>Fixed shrinking of access widening abstract methods, for the Dalvik VM.
-<li>Fixed overly aggressive shrinking of class annotations.
-<li>Fixed processing of unused classes in generic signatures.
-<li>Fixed merging of classes with similar class members.
-<li>Added java system property <code>optimize.conservatively</code> to allow
- for instructions intentionally throwing <code>NullPointerException</code>,
- <code>ArrayIndexOutOfBoundsException</code>, or
- <code>ClassCastException</code> without other useful effects.
-<li>Fixed optimization of unnecessary variable initializations.
-<li>Fixed optimization of code involving NaN.
-<li>Fixed inlining of methods that are supposed to be kept.
-<li>Fixed preverification of artificially convoluted dup constructs.
-<li>Fixed quotes for java commands in .bat scripts.
-<li>Improved handling of non-sequential line number information.
-<li>Now requiring Java 5 or higher for running ProGuard.
-<li>Updated build files.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>May 2012</div> Version 4.8</h3>
-<ul>
-<li>Added more peephole optimizations for strings.
-<li>Added support for multiple external configuration files in Ant
- configurations.
-<li>Added support for Ant properties in external configuration files.
-<li>Fixed parsing of empty file filters on input and output.
-<li>Fixed parsing of '*' wildcard for file filters and name filters.
-<li>Fixed obfuscation of private methods that are overridden in concrete
- classes with intermediary abstract classes and interfaces (workaround
- for Oracle bugs #6691741 and #6684387).
-<li>Fixed optimization of complex finally blocks, compiled with JDK 1.4 or
- earlier.
-<li>Fixed optimizing signatures of methods that are marked as not having
- side effects.
-<li>Fixed optimization of long local variables possibly causing verification
- error for register pairs.
-<li>Fixed merging of classes defined inside methods.
-<li>Fixed stack consistency in optimization step.
-<li>No longer removing debug information about unused parameters, for
- <code>-keepparameternames</code> or <code>-keepattributes</code>.
-<li>Fixed updating manifest files with carriage return characters.
-<li>Now removing unreachable code in preverification step.
-<li>Improved default regular expression for stack traces in ReTrace.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Dec 2011</div> Version 4.7</h3>
-<ul>
-<li>Added support for Java 7.
-<li>Parsing unquoted file names with special characters more leniently.
-<li>Added support for instance methods overriding class methods.
-<li>Added removal of unused parameterless constructors.
-<li>Added removal of empty class initializers.
-<li>Added peephole optimizations for constant strings.
-<li>Avoiding idle optimization passes.
-<li>Improved removal of unused constants after obfuscation.
-<li>Fixed removal of unused classes referenced by annotations.
-<li>Fixed simplifying parameters of constructors that should actually be
- preserved.
-<li>Fixed simplifying parameters of large numbers of similar constructors.
-<li>Fixed exceptions in optimization of unusual obfuscated code.
-<li>Fixed NullPointerException when specifying <code>-keepclassmembers</code>
- without specific class or class members.
-<li>Fixed potential problems with mixed-case class name dictionaries when not
- allowing mixed-case class names.
-<li>Fixed obfuscation of classes with EnclosingMethod attributes that don't
- specify methods.
-<li>Fixed preverification of returning try blocks with finally blocks, inside
- try blocks, when compiled with JDK 1.4.
-<li>Fixed sorting of interfaces containing generics.
-<li>Fixed paths in shell scripts.
-<li>Fixed filling in of text fields showing class obfuscation dictionary and
- package obfuscation dictionary from configuration in GUI.
-<li>Worked around Oracle Java 6/7 bug #7027598 that locked the GUI on Linux.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Feb 2011</div> Version 4.6</h3>
-<ul>
-<li>Added support for synthetic, bridge, and varargs modifiers in configuration.
-<li>Added detection of atomic updater construction with constant arguments.
-<li>Fixed merging of package visible classes.
-<li>Fixed optimization of fields that are only accessed by reflection.
-<li>Fixed optimization of read-only or write-only fields that are volatile.
-<li>Fixed handling of side-effects due to static initializers.
-<li>Fixed handling of bridge flags in obfuscation step.
-<li>Fixed handling of super flag when merging classes.
-<li>Fixed updating of variable tables when optimizing variables.
-<li>Fixed removal of unused parameters with 32 or more parameters.
-<li>Fixed incorrect removal of exception handler for instanceof instruction.
-<li>Fixed inlining of methods with unusual exception handlers.
-<li>Fixed optimization of unusual code causing stack underflow.
-<li>Fixed keeping of constructor parameter names.
-<li>Fixed unwanted wrapping of non-standard META-INF files.
-<li>Fixed filtering of warnings about references to array types.
-<li>Fixed overriding of warning option and note option in Ant task.
-<li>Improved detection of file name extensions for canonical paths.
-<li>Improved printing of seeds specified by <code>-keep</code> options.
-<li>Improved printing of notes about unkept classes.
-<li>Improved checking whether output is up to date.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Jun 2010</div> Version 4.5</h3>
-<ul>
-<li>Added option <code>-keepparameternames</code>.
-<li><code>-dontskipnonpubliclibraryclasses</code> is now set by default. Added
- <code>-skipnonpubliclibraryclasses</code> as an option.
-<li>Made processing independent of order of input classes to get even more
- deterministic output.
-<li>Improved constant field propagation.
-<li>Improved renaming of resource files in subdirectories of packages.
-<li>Avoiding making fields in interfaces private.
-<li>Optimizing exception handlers for monitorexit instruction.
-<li>Reduced maximum allowed code length after inlining from 8000 bytes to
- 7000 bytes.
-<li>Fixed missing warnings about missing library classes.
-<li>Fixed shrinking of annotations with arrays of length 0.
-<li>Fixed handling of -0.0 and NaN values when simplifying expressions.
-<li>Fixed copying of exception handlers when simplifying tail recursion calls.
-<li>Fixed optimization of introspected fields.
-<li>Fixed simplification of unnecessary variable initializations.
-<li>Fixed evaluation of subroutines in pre-JDK 1.5 code.
-<li>Fixed updating of access flags in inner classes information.
-<li>Fixed disabling of field privatization.
-<li>Fixed invocations of privatized methods.
-<li>Fixed updating of local variable debug information in optimization step.
-<li>Fixed print settings without file name in GUI.
-<li>Fixed field privatization setting in GUI.
-<li>Fixed saving incorrectly quoted arguments in GUI.
-<li>Fixed handling of regular expressions with only negators.
-<li>Fixed unwanted wrapping of non-standard META-INF files.
-<li>Fixed regular expression pattern for constructors in ReTrace.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Jul 2009</div> Version 4.4</h3>
-<ul>
-<li>Added new peephole optimizations.
-<li>Added option <code>-optimizations</code> for fine-grained configuration of
- optimizations.
-<li>Added option <code>-adaptclassstrings</code> for adapting string constants
- that correspond to obfuscated classes.
-<li>Added option <code>-keeppackagenames</code> for keeping specified package
- names from being obfuscated.
-<li>Added option <code>-keepdirectories</code> for keeping specified directory
- entries in output jars.
-<li>Extended options <code>-dontnote</code> and <code>-dontwarn</code> for
- fine-grained configuration of notes and warnings.
-<li>Added option <code>-regex</code> in ReTrace, for specifying alternative
- regular expressions to parse stack traces.
-<li>Extended renaming of resource files based on obfuscation.
-<li>Improved inlining of constant parameters and removal of unused parameters.
-<li>Avoiding bug in IBM's JVM for JSE, in optimization step.
-<li>Avoiding ArrayIndexOutOfBoundsException in optimization step.
-<li>Fixed configuration with annotations that are not preserved themselves.
-<li>Fixed preverification of invocations of super constructors with arguments
- containing ternary operators.
-<li>Fixed processing of unreachable exception handlers.
-<li>Fixed merging of exception classes.
-<li>Fixed repeated method inlining.
-<li>Fixed inlining of finally blocks surrounded by large try blocks, compiled
- with JDK 1.4 or earlier.
-<li>Fixed optimization of complex finally blocks, compiled with JDK 1.4 or
- earlier.
-<li>Fixed obfuscation of anonymous class names, if <code>EnclosingMethod</code>
- attributes are being kept.
-<li>Fixed obfuscation of inner class names in generic types.
-<li>Fixed decoding of UTF-8 strings containing special characters.
-<li>Fixed copying of debug information and annotations when merging classes.
-<li>Fixed writing out of unknown attributes.
-<li>Fixed updating manifest files with split lines.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Dec 2008</div> Version 4.3</h3>
-<ul>
-<li>Added class merging.
-<li>Added static single assignment analysis.
-<li>Added support for annotation and enumeration class types in configuration.
-<li>Refined shrinking of fields in case of unusual
- <code>-keepclassmembers</code> options.
-<li>Added simplification of tail recursion calls.
-<li>Added new peephole optimizations.
-<li>Fixed optimization of unused variable initializations causing negative
- stack sizes.
-<li>Fixed optimization of unusual initialization code causing
- NullPointerExceptions.
-<li>Fixed optimization of half-used long and double parameters.
-<li>Fixed processing of complex generics signatures.
-<li>Working around suspected java compiler bug with parameter annotations on
- constructors of non-static inner classes.
-<li>Fixed obfuscation of classes with inner classes whose names are preserved.
-<li>Fixed access of protected methods in repackaged classes.
-<li>Added options <code>-classobfuscationdictionary</code> and
- <code>-packageobfuscationdictionary</code>.
-<li>Adapting more types of resource file names based on obfuscation.
-<li>Extended warnings about incorrect dependencies.
-<li>Added start-up scripts and build scripts.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Mar 2008</div> Version 4.2</h3>
-<ul>
-<li>Refined data flow analysis in optimization step.
-<li>Fixed handling of exceptions when inlining subroutines.
-<li>Fixed inlining of incompatible code constructs between different java
- versions.
-<li>Fixed computation of local variable frame size.
-<li>Fixed optimization of infinite loops.
-<li>Fixed optimization of subroutine invocations.
-<li>Fixed optimization of floating point remainder computations.
-<li>Fixed removal of unused parameters in method descriptors containing arrays
- of longs or doubles.
-<li>Added undocumented java system properties
- <code>maximum.inlined.code.length</code> (default is 8) and
- <code>maximum.resulting.code.length</code> (defaults are 8000 for JSE and
- 2000 for JME), for expert users who read release notes.
-<li>Fixed processing of generic types in Signature attributes in shrinking and
- optimization steps.
-<li>Fixed processing of inner class names in Signature attributes in obfuscation
- step.
-<li>Improved adapting resource file names following obfuscated class names.
-<li>Fixed interpretation of package names in GUI.
-<li>Fixed default settings for Xlets in GUI.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Dec 2007</div> Version 4.1</h3>
-<ul>
-<li>Fixed shrinking of default annotation element values.
-<li>Fixed optimization of invocations of methods in same class that are
- accessed through extensions.
-<li>Fixed optimization of invocations of synchronized methods without other
- side-effects.
-<li>Fixed optimization of some non-returning subroutines.
-<li>Fixed handling of local variable debug information when inlining methods.
-<li>Avoiding StackOverflowErrors during optimization of complex methods.
-<li>Fixed obfuscation of potentially ambiguous non-primitive constants in
- interfaces.
-<li>Fixed preverification of some code constructs involving String, Class, and
- exception types.
-<li>The Ant task now allows empty <code>&lt;injars&gt;</code> and
- <code>&lt;libraryjars&gt;</code> elements.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Sep 2007</div> Version 4.0</h3>
-<ul>
-<li>Added preverifier for Java 6 and Java Micro Edition, with new options
- <code>-microedition</code> and <code>-dontpreverify</code>.
-<li>Added new option <code>-target</code> to modify java version of processed
- class files.
-<li>Made <code>-keep</code> options more orthogonal and flexible, with option
- modifiers <code>allowshrinking</code>, <code>allowoptimization</code>, and
- <code>allowobfuscation</code>.
-<li>Added new wildcards for class member descriptors: "<code>***</code>",
- matching any type, and "<code>...</code>", matching any number of
- arguments.
-<li>Added support for configuration by means of annotations.
-<li>Improved shrinking of unused annotations.
-<li>Added check on modification times of input and output, to avoid unnecessary
- processing, with new option <code>-forceprocessing</code>.
-<li>Added new options <code>-flattenpackagehierarchy</code> and
- <code>-repackageclasses</code> (replacing <code>-defaultpackage</code>) to
- control obfuscation of package names.
-<li>Added new options <code>-adaptresourcefilenames</code> and
- <code>-adaptresourcefilecontents</code>, with file filters, to update
- resource files corresponding to obfuscated class names.
-<li>Added detection of dynamically accessed fields and methods.
-<li>Now treating <code>Exceptions</code> attributes as optional.
-<li>Now respecting naming rule for nested class names
- (<code>EnclosingClass$InnerClass</code>) in obfuscation step, if
- <code>InnerClasses</code> attributes or <code>EnclosingMethod</code>
- attributes are being kept.
-<li>Added new inter-procedural optimizations: method inlining and propagation
- of constant fields, constant arguments, and constant return values.
-<li>Added optimized local variable allocation.
-<li>Added more than 250 new peephole optimizations.
-<li>Improved making classes and class members public or protected.
-<li>Now printing notes on suspiciously unkept classes in parameters of
- specified methods.
-<li>Now printing notes for class names that don't seem to be fully qualified.
-<li>Added support for uppercase filename extensions.
-<li>Added tool tips to the GUI.
-<li>Rewritten class file I/O code.
-<li>Updated documentation and examples.
-</ul>
-Upgrade considerations:
-<ul>
-
-<li>Since ProGuard now treats the <code>Exceptions</code> attribute as
- optional, you may have to specify <code>-keepattributes Exceptions</code>,
- notably when processing code that is to be used as a library.
-
-<li>ProGuard now preverifies code for Java Micro Edition, if you specify the
- option <code>-microedition</code>. You then no longer need to process the
- code with an external preverifier.
-
-<li>You should preferably specify <code>-repackageclasses</code> instead of the
- old option name <code>-defaultpackage</code>.
-</ul>
-
-<h3><div>Dec 2007</div> Version 3.11</h3>
-<ul>
-<li>Fixed optimization of invocations of methods in same class that are
- accessed through extensions.
-<li>Fixed optimization of invocations of synchronized methods without other
- side-effects.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Aug 2007</div> Version 3.10</h3>
-<ul>
-<li>Now handling mixed-case input class names when
- <code>-dontusemixedcaseclassnames</code> is specified.
-<li>Fixed optimization of synchronization on classes, as compiled by Eclipse
- and Jikes.
-<li>Fixed optimization of switch statements with unreachable cases.
-<li>Avoiding merging subsequent identically named files.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Jun 2007</div> Version 3.9</h3>
-<ul>
-<li>Fixed processing of .class constructs in Java 6.
-<li>Fixed repeated processing of .class constructs.
-<li>Fixed possible division by 0 in optimization step.
-<li>Fixed handling of variable instructions with variable indices larger than
- 255.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Mar 2007</div> Version 3.8</h3>
-<ul>
-<li>Fixed optimization of parameters used as local variables.
-<li>Fixed obfuscation with conflicting class member names.
-<li>Fixed incremental obfuscation with incomplete mapping file for library jars.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Dec 2006</div> Version 3.7</h3>
-<ul>
-<li>Now accepting Java 6 class files.
-<li>Fixed shrinking of partially used annotations.
-<li>Improved incremental obfuscation, with new option
- <code>-useuniqueclassmembernames</code>.
-<li>Printing more information in case of conflicting configuration and input.
-<li>Fixed optimization of repeated array length instruction.
-<li>Fixed optimization of subsequent try/catch/finally blocks with return
- statements.
-<li>Fixed optimization of complex stack operations.
-<li>Fixed optimization of simple infinite loops.
-<li>Fixed optimization of expressions with constant doubles.
-<li>Tuned optimization to improve size reduction after preverification.
-<li>Fixed overflows of offsets in long code blocks.
-<li>Now allowing class names containing dashes.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>May 2006</div> Version 3.6</h3>
-<ul>
-<li>No longer automatically keeping classes in parameters of specified methods
- from obfuscation and optimization (introduced in version 3.4).
-<li>Fixed inlining of interfaces that are used in .class constructs.
-<li>Fixed removal of busy-waiting loops reading volatile fields.
-<li>Fixed optimization of comparisons of known integers.
-<li>Fixed optimization of known branches.
-<li>Fixed optimization of method calls on arrays of interfaces.
-<li>Fixed optimization of method calls without side-effects.
-<li>Fixed optimization of nested try/catch/finally blocks with return
- statements.
-<li>Fixed initialization of library classes that only appear in descriptors.
-<li>Fixed matching of primitive type wildcards in configuration.
-<li>Fixed the boilerplate specification for enumerations in the GUI.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Jan 2006</div> Version 3.5</h3>
-<ul>
-<li>Fixed obfuscation of class members with complex visibility.
-<li>Fixed optimization bugs causing stack verification errors.
-<li>Fixed optimization bug causing overridden methods to be finalized.
-<li>Fixed optimization bug causing abstract method errors for retro-fitted
- library methods.
-<li>Fixed optimization bug evaluating code with constant long values.
-<li>Fixed bug in updating of optional local variable table attributes and local
- variable type table attributes after optimization.
-<li>Fixed interpretation of comma-separated class names without wildcards.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Oct 2005</div> Version 3.4</h3>
-<ul>
-<li>Extended optimizations: removing duplicate code within methods.
-<li>Extended regular expressions for class names to comma-separated lists.
-<li>Now automatically keeping classes in descriptors of kept class members.
-<li>Added verbose statistics for optimizations.
-<li>Added boilerplate Number optimizations in GUI.
-<li>Fixed <code>Class.forName</code> detection.
-<li>Fixed incremental obfuscation bug.
-<li>Fixed optimization bug causing stack verification errors.
-<li>Fixed optimization bugs related to removal of unused parameters.
-<li>Fixed exception when optimizing code with many local variables.
-<li>Fixed exception when saving configuration with initializers in GUI.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Jun 2005</div> Version 3.3</h3>
-<ul>
-<li>Extended optimizations: making methods private and static when possible,
- making classes static when possible, removing unused parameters.
-<li>Made file names relative to the configuration files in which they are
- specified. Added <code>-basedirectory</code> option.
-<li>Added <code>-whyareyoukeeping</code> option to get details on why given
- classes and class members are being kept.
-<li>Added warnings for misplaced class files.
-<li>Improved printing of notes for <code>Class.forName</code> constructs.
-<li>Implemented '<code>assumenosideeffects</code>' nested element in Ant task.
-<li>Improved processing of annotations.
-<li>Fixed reading and writing of parameter annotations.
-<li>Fixed various optimization bugs.
-<li>Fixed wildcards not matching '-' character.
-<li>Fixed wildcard bug and checkbox bugs in GUI.
-<li>Setting file chooser defaults in GUI.
-<li>Leaving room for growBox in GUI on Mac OS X.
-<li>Properly closing configuration files.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Dec 2004</div> Version 3.2</h3>
-<ul>
-<li>Fixed JDK5.0 processing bugs.
-<li>Fixed optimization bugs.
-<li>Fixed relative paths in Ant task.
-<li>Improved speed of shrinking step.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Nov 2004</div> Version 3.1</h3>
-<ul>
-<li>Improved obfuscation and shrinking of private class members.
-<li>Added inlining of interfaces with single implementations.
-<li>Added option to specify obfuscation dictionary.
-<li>Added option to read package visible library class members.
-<li>Extended support for JDK5.0 attributes.
-<li>Fixed various optimization bugs.
-<li>Modified Ant task to accept paths instead of filesets.
-<li>Fixed two Ant task bugs.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Aug 2004</div> Version 3.0</h3>
-<ul>
-<li>Added bytecode optimization step, between shrinking step and obfuscation
- step.
-<li>Generalized filtered recursive reading and writing of jars, wars, ears,
- zips, and directories.
-<li>Added support for grouping input and output jars, wars, ears, zips, and
- directories.
-<li>Added support for applying mapping files to library classes.
-<li>Removed <code>-resourcejars</code> option. Resources should now be read
- using regular <code>-injars</code> options, using filters if necessary.
-<li>Rewrote Ant task. Input and output modification dates are not checked at
- the moment. Minor changes in XML schema:
- <ul>
- <li>Filters now specified using attributes.
- <li>'<code>outjars</code>' now nested element instead of attribute.
- <li>'<code>type</code>' attribute of <code>&lt;method&gt;</code> element no
- longer defaults to '<code>void</code>'.
- <li><code>&lt;</code> and <code>&gt;</code> characters now have to be
- encoded in embedded configurations.
- <li><code>&lt;proguardconfiguration&gt;</code> task no longer accepts
- attributes.
- </ul>
-<li>Updated J2ME WTK plugin, now customizable through configuration file.
-<li>Updated GUI.
-<li>Fixed various processing bugs.
-<li>Fixed ReTrace parsing bugs.
-<li>Improved jar compression.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Mar 2004</div> Version 2.1</h3>
-<ul>
-<li>Added support for JDK1.5 classes.
-<li>Added additional wildcard for matching primitive types.
-<li>Added possibility to switch off notes about duplicate class definitions.
-<li>Fixed use of multiple filters on output jars.
-<li>Fixed option to keep all attributes.
-<li>Fixed various Ant task bugs.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Dec 2003</div> Version 2.0</h3>
-<ul>
-<li>Added a graphical user interface for ProGuard and ReTrace.
-<li>Added <code>-applymapping</code> option for incremental obfuscation.
-<li>Added support for filtering input and output files.
-<li>Added support for the J++ <code>SourceDir</code> attribute.
-<li>Improved detection of <code>.class</code> constructs.
-<li>Improved handling of misplaced manifest files.
-<li>Improved implementation of ReTrace.
-<li>Worked around String UTF-8 encoding bug affecting foreign characters.
-<li>Fixed exception when ignoring warnings.
-<li>Fixed various Ant task bugs.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Aug 2003</div> Version 1.7</h3>
-<ul>
-<li>Fixed various Ant task bugs.
-<li>Fixed ClassCastException due to explicitly used abstract classes with
- implicitly used interfaces targeted at JRE1.2 (the default in JDK1.4).
-<li>Fixed <code>-defaultpackage</code> bug for protected classes and class
- members.
-<li>Fixed ReTrace bug when retracing without line number tables.
-<li>Worked around zip package problems with duplicate out entries and rogue
- manifest files.
-<li>Added work-around for handling malformed legacy interface class files.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>May 2003</div> Version 1.6</h3>
-<ul>
-<li>Added support for Ant.
-<li>Added support for the J2ME Wireless Toolkit.
-<li>Added support for reading and writing directory hierarchies.
-<li>Added option for specifying resource jars and directories.
-<li>Added support for wildcards in class member specifications.
-<li>Improved handling of the <code>-defaultpackage</code> option.
-<li>Improved stack trace parsing in ReTrace tool.
-<li>Fixed processing of libraries containing public as well as non-public
- extensions of non-public classes.
-<li>Fixed examples for processing libraries, midlets, and serializable code.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Jan 2003</div> Version 1.5</h3>
-<ul>
-<li>Fixed processing of retrofitted library interfaces.
-<li>Fixed processing of <code>.class</code> constructs in internal classes
- targeted at JRE1.2 (the default in JDK1.4).
-<li>Fixed <code>-dump</code> option when <code>-outjar</code> option is not
- present.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Nov 2002</div> Version 1.4</h3>
-<ul>
-<li>Now copying resource files over from the input jars to the output jar.
-<li>Added option to obfuscate using lower-case class names only.
-<li>Added better option for obfuscating native methods.
-<li>Added option not to ignore non-public library classes.
-<li>Added automatic <code>.class</code> detection for classes compiled with
- Jikes.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Sep 2002</div> Version 1.3</h3>
-<ul>
-<li>Added support for wildcards in class names.
-<li>Added tool to de-obfuscate stack traces.
-<li>Added options to print processing information to files.
-<li>Added option to rename source file attributes.
-<li>Fixed processing of implicitly used interfaces targeted at JRE1.2 (the
- default in JDK1.4)
-<li>Fixed processing of configurations with negated access modifiers.
-<li>Fixed duplicate class entry bug.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Aug 2002</div> Version 1.2</h3>
-<ul>
-<li>Improved speed.
-<li>Fixed processing of classes targeted at JRE1.2 (the default in JDK1.4)
- with references to their own subclasses.
-<li>Fixed processing of static initializers in J2ME MIDP applications.
-<li>Fixed processing of retrofitted interfaces (again).
-<li>Added more flexible handling of white space in configuration.
-<li>Updated documentation.
-</ul>
-
-<h3><div>Jul 2002</div> Version 1.1</h3>
-<ul>
-<li>Added automatic detection of <code>Class.forName("MyClass")</code>,
- <code>MyClass.class</code>, and
- <code>(MyClass)Class.forName(variable).newInstance()</code> constructs.
- This greatly simplifies configuration.
-<li>Added options to keep class names and class member names without affecting
- any shrinking. They are mostly useful for native methods and serializable
- classes.
-<li>Fixed processing of retrofitted interfaces.
-<li>Added handling of missing/invalid manifest file in input jar.
-<li>Updated documentation and examples.
-</ul>
-
-<h3><div>Jun 2002</div> Version 1.0</h3>
-<ul>
-<li>First public release, based on class parsing code from Mark Welsh's
- <b>RetroGuard</b>.
-</ul>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-
-</body>
-</html>
diff --git a/docs/drop1.gif b/docs/drop1.gif
deleted file mode 100644
index 426d856..0000000
--- a/docs/drop1.gif
+++ /dev/null
Binary files differ
diff --git a/docs/drop2.gif b/docs/drop2.gif
deleted file mode 100644
index b607542..0000000
--- a/docs/drop2.gif
+++ /dev/null
Binary files differ
diff --git a/docs/drop3.gif b/docs/drop3.gif
deleted file mode 100644
index 11ce424..0000000
--- a/docs/drop3.gif
+++ /dev/null
Binary files differ
diff --git a/docs/favicon.ico b/docs/favicon.ico
deleted file mode 100644
index 3923ec1..0000000
--- a/docs/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/docs/feedback.html b/docs/feedback.html
deleted file mode 100644
index 8a2fad4..0000000
--- a/docs/feedback.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-script-type" content="text/javascript">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Feedback</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="index.html#feedback.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="index.html#feedback.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Feedback</h2>
-
-By now, I've invested an enormous amount of time in <b>ProGuard</b>. You can
-help by providing feedback! If you have problems, bugs, bug fixes, ideas,
-encouragements, etc., please let me know:
-<p>
-<ul class="spacious">
-<li>Through
- <a href="http://www.saikoa.com/proguard/support" target="_top">Saikoa</a>,
- we provide professional support for ProGuard. If you find ProGuard useful
- and you would like to have some professional backing, this is the place to
- go.</li>
-
-<li>The <a href="https://sourceforge.net/projects/proguard/forums/forum/182456"
- target="other">help forum</a> (at SourceForge)
- and <a href="http://stackoverflow.com/questions/tagged/proguard"
- target="other">Stack Overflow</a> are common places to ask questions about
- any problems you might have configuring and running ProGuard. At this
- time, I can generally only assist other open source projects though. If
- you're working on commercial software, please consider our professional
- support above.</li>
-
-<li>The <a href="https://sourceforge.net/projects/proguard/forums/forum/182455"
- target="other">open discussion forum</a> (at SourceForge) offers a place
- to share your thoughts and discuss new ideas.</li>
-
-<li>The <a href="http://sourceforge.net/p/proguard/bugs/" target="other">bug
- tracking page</a> (at SourceForge) allows you to submit and consult bug
- reports. Please make sure the reports are complete and concise. If I can't
- reproduce the problem, I most likely can't fix it either.</li>
-
-<li>The <a href="http://sourceforge.net/p/proguard/feature-requests/"
- target="other">feature request page</a> (at SourceForge) allows you to
- submit and consult feature requests. I generally have my own road map in
- mind, but this is the place express your interest in new and existing
- ideas.</li>
-
-<li>The <a href="https://sourceforge.net/projects/proguard/files/"
- target="other">download section</a> at SourceForge and the <a
- href="http://software.freecode.com/projects/proguard"
- target="other">project page</a> at Freecode (Freshmeat) offer the
- possibility to subscribe to the announcements of new releases. They are
- the most efficient way to stay abreast of the latest developments.</li>
-
-<li>For anything that doesn't fall in the above categories, you can mail me
- directly at
-
-<script type="text/javascript" language="JavaScript">
-<!--
-document.write("<a href=\"ma");
-document.write("ilto:");
-document.write("lafortune");
-document.write("&#64;");
-document.write("users.sourceforge.net\">");
-document.write("lafortune");
-document.write("&#64;");
-document.write("users.sourceforge.net");
-document.write("<\/a>");
-document.write(" <em>or<\/em> at ");
-document.write("<a href=\"ma");
-document.write("ilto:");
-document.write("eric");
-document.write("&#64;");
-document.write("graphics.cornell.edu\">");
-document.write("eric");
-document.write("&#64;");
-document.write("graphics.cornell.edu");
-document.write("<\/a>");
-//-->
-</script>
-<noscript>
-&lt;&nbsp;lafortune&nbsp;&#64;&nbsp;users&nbsp;.&nbsp;sourceforge&nbsp;.&nbsp;net&nbsp;&gt;
-<em>or</em> at
-&lt;&nbsp;eric&nbsp;&#64;&nbsp;graphics&nbsp;.&nbsp;cornell&nbsp;.&nbsp;edu&nbsp;&gt; (please remove the spaces)
-</noscript>
-.</li>
-</ul>
-<p>
-I can't promise a swift answer, or any answer at all, for that matter, but it's
-always great to see constructive comments.
-<p>
-
-<b>ProGuard</b> isn't a typical open source project, in the sense that I am
-<em>not</em> looking for code contributions. Developing on my own allows me to
-do things my way, without the overhead and compromises associated with larger
-projects.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-
-</body>
-</html>
diff --git a/docs/index.html b/docs/index.html
deleted file mode 100644
index 40c85d7..0000000
--- a/docs/index.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-script-type" content="text/javascript">
-<meta http-equiv="content-style-type" content="text/css">
-<meta name="author" content="Eric Lafortune">
-<meta name="description" content="ProGuard: java shrinker, optimizer, obfuscator, and preverifier">
-<meta name="keywords" content="java obfuscator, optimizer, shrinker, preverfier">
-<link rel="stylesheet" type="text/css" href="style.css">
-<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
-<title>ProGuard</title>
-</head>
-
-<script type="text/javascript" language="JavaScript">
-//<!--
- var destWindowHash = window.location.hash;
- function mainFrameLoaded() {
- if (destWindowHash.length > 1) {
- var destFrameFile = destWindowHash.substring(1);
- var currFrameFile = frames["main"].location.href.replace(window.location.href.replace(/index.html.*/, ""), "");
- if (currFrameFile != destFrameFile) {
- frames["main"].location.replace(destFrameFile);
- if (destFrameFile.search("manual/") >= 0)
- frames["sections"].location.replace("manual/sections.html");
- }
- destWindowHash = "";
- }
- }
-//-->
-</script>
-
-<frameset
- rows="50,*"
- framespacing="0"
- frameborder="no">
-
-<frame
- id="title"
- name="title"
- src="title.html"
- scrolling="no"
- marginwidth="0"
- marginheight="0"
- noresize="noresize" />
-
-<frameset
- cols="120,*"
- framespacing="0"
- frameborder="no">
-
-<frame
- id="sections"
- name="sections"
- src="sections.html"
- scrolling="no"
- marginwidth="0"
- marginheight="0"
- noresize="noresize" />
-
-<frame
- id="main"
- name="main"
- src="main.html"
- scrolling="auto"
- marginwidth="10"
- marginheight="10"
- noresize="noresize"
- onload="mainFrameLoaded()" />
-
-</frameset>
-</frameset>
-
-<noframes>
-<body>
-<p class="intro">
-<b>ProGuard</b> is a free Java class file shrinker, optimizer, obfuscator, and
-preverifier. It detects and removes unused classes, fields, methods, and
-attributes. It optimizes bytecode and removes unused instructions. It renames
-the remaining classes, fields, and methods using short meaningless names.
-Finally, it preverifies the processed code for Java 6 or for Java Micro
-Edition.
-</p>
-<p>
-Your browser doesn't support frames, but that's cool.
-<p>
-You can go straight to the <a href="main.html">main page</a>.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</noframes>
-</html>
diff --git a/docs/license.html b/docs/license.html
deleted file mode 100644
index 81eb962..0000000
--- a/docs/license.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard License</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="index.html#license.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="index.html#license.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>License</h2>
-
-<b>ProGuard</b> is free. You can use it freely for processing your
-applications, commercial or not. Your code obviously remains yours after
-having been processed, and its license can remain unchanged.
-<p>
-
-The <b>ProGuard code</b> itself is copyrighted, but its distribution license
-provides you with some rights for modifying and redistributing its code and
-its documentation. More specifically, <b>ProGuard</b> is distributed under the
-terms of the <a href="GPL.html">GNU General Public License</a> (GPL), version
-2, as published by the <a href="http://www.fsf.org/" target="other">Free
-Software Foundation</a> (FSF). In short, this means that you may freely
-redistribute the program, modified or as is, on the condition that you make
-the complete source code available as well. If you develop a program that is
-linked with
-<b>ProGuard</b>, the program as a whole has to be distributed at no charge
-under the GPL. I am granting a <a href="GPL_exception.html">special
-exception</a> to the latter clause (in wording suggested by
-the <a href="http://www.gnu.org/copyleft/gpl-faq.html#GPLIncompatibleLibs"
-target="other">FSF</a>), for combinations with the following stand-alone
-applications: Apache Ant, Apache Maven, the Google Android SDK, the Eclipse
-ProGuardDT GUI, the EclipseME JME IDE, the Oracle NetBeans Java IDE, the
-Oracle JME Wireless Toolkit, the Simple Build Tool for Scala, and the Sanaware
-Tools.
-
-<p>
-The <b>ProGuard user documentation</b> is copyrighted as well. It may only be
-redistributed without changes, along with the unmodified version of the code.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/main.html b/docs/main.html
deleted file mode 100644
index 742c11b..0000000
--- a/docs/main.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<meta name="author" content="Eric Lafortune">
-<meta name="description" content="ProGuard: java shrinker, optimizer, obfuscator, and preverifier">
-<meta name="keywords" content="java obfuscator, optimizer, shrinker, preverfier">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Main</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="index.html#main.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="index.html#main.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Main</h2>
-
-<p class="intro">
-<b>ProGuard</b> is a free Java class file shrinker, optimizer, obfuscator, and
-preverifier. It detects and removes unused classes, fields, methods, and
-attributes. It optimizes bytecode and removes unused instructions. It renames
-the remaining classes, fields, and methods using short meaningless names.
-Finally, it preverifies the processed code for Java 6 or higher, or for Java
-Micro Edition.
-</p>
-Some uses of <b>ProGuard</b> are:
-<ul>
-
-<li>Creating more compact code, for smaller code archives, faster transfer
- across networks, faster loading, and smaller memory footprints.</li>
-
-<li>Making programs and libraries harder to reverse-engineer.</li>
-
-<li>Listing dead code, so it can be removed from the source code.</li>
-
-<li>Retargeting and preverifying existing class files for Java 6 or higher, to
- take full advantage of their faster class loading.</li>
-
-</ul>
-<p>
-<b>ProGuard</b>'s main advantage compared to other Java obfuscators is
-probably its compact template-based configuration. A few intuitive command
-line options or a simple configuration file are usually sufficient.
-The user manual explains all available options and shows examples of this
-powerful configuration style.
-<p>
-<b>ProGuard</b> is fast. It only takes seconds to process programs and
-libraries of several megabytes. The results section presents actual figures
-for a number of applications.
-<p>
-<b>ProGuard</b> is a command-line tool with an optional graphical user
-interface. It also comes with plugins for Ant, for Gradle, and for the JME
-Wireless Toolkit.
-<p>
-<p class="intro">
-<a href="http://www.saikoa.com/dexguard" target="_top">
-<img align="left" src="android_shades.png" width="64" height="64" /></a>
-<b>ProGuard</b> now has a sibling optimizer and obfuscator for Android:
-<a href="http://www.saikoa.com/dexguard" target="_top"><b>DexGuard</b></a>. It
-focuses on code protection, with additional features like string encryption,
-class encryption, and dex splitting. It directly targets Dalvik bytecode and
-streamlines the Android build process.
-</p>
-The following sections provide more detailed information:
-<ul>
-<li><a href="main.html">Main</a>: this overview page.</li>
-<li><a href="results.html">Results</a>: some results obtained with
- <b>ProGuard</b>, including timings and memory usage.</li>
-<li><a href="FAQ.html">FAQ</a>: answers to some Frequently Asked Questions.</li>
-<li><a href="manual/index.html">Manual</a>: the complete <b>ProGuard</b> user
- manual, with examples and troubleshooting tips.</li>
-<li><a href="quality.html">Quality</a>: a discussion of the (excellent) quality
- of <b>ProGuard</b>'s code.</li>
-<li><a href="screenshots.html">Screenshots</a>: some impressions of what <b>ProGuard</b> looks like.</li>
-<li><a href="testimonials.html">Testimonials</a>: what users think of
- <b>ProGuard</b>.</li>
-<li><a href="license.html">License</a>: <b>ProGuard</b> is free, under a GPL
- license.</li>
-<li><a href="downloads.html">Downloads</a>: download the <b>ProGuard</b>
- package yourself.</li>
-<li><a href="feedback.html">Feedback</a>: tell me about your experiences, or
- learn from others on our forums.</li>
-<li><a href="acknowledgements.html">Acknowledgements</a>: people who have been
- helpful.</li>
-<li><a href="alternatives.html">Alternatives</a>: other Java obfuscators,
- optimizers, and shrinkers.</li>
-</ul>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/android_small.png b/docs/manual/android_small.png
deleted file mode 100644
index 0313515..0000000
--- a/docs/manual/android_small.png
+++ /dev/null
Binary files differ
diff --git a/docs/manual/ant.html b/docs/manual/ant.html
deleted file mode 100644
index 5db88df..0000000
--- a/docs/manual/ant.html
+++ /dev/null
@@ -1,661 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>Ant Task</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/ant.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/ant.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Ant Task</h2>
-
-<b>ProGuard</b> can be run as a task in the Java-based build tool Ant (version
-1.8 or higher).
-<p>
-
-Before you can use the <code>proguard</code> task, you have to tell Ant about
-this new task. The easiest way is to add the following line to your
-<code>build.xml</code> file:
-<p>
-
-<pre>
-&lt;taskdef resource="proguard/ant/task.properties"
- classpath="/usr/local/java/proguard/lib/proguard.jar" /&gt;
-</pre>
-<p>
-
-Please make sure the class path is set correctly for your system.
-<p>
-
-There are three ways to configure the ProGuard task:
-<ol>
-<li>using an external configuration file,</li>
-<li>using embedded ProGuard configuration options, or</li>
-<li>using the equivalent XML configuration tags.</li>
-</ol>
-These three ways can be combined, depending on practical circumstances and
-personal preference.
-<p>
-
-<h3>1. An external ProGuard configuration file</h3>
-
-The simplest way to use the ProGuard task in an Ant build file is to keep your
-ProGuard configuration file, and include it from Ant. You can include your
-ProGuard configuration file by setting
-the <a href="#configuration_attribute"><code>configuration</code></a>
-attribute of your
-<code>proguard</code> task. Your ant build file will then look like this:
-<p>
-
-<pre>
-&lt;taskdef resource="proguard/ant/task.properties"
- classpath="/usr/local/java/proguard/lib/proguard.jar" /&gt;
-&lt;proguard configuration="myconfigfile.pro"/&gt;
-</pre>
-<p>
-
-This is a convenient option if you prefer ProGuard's configuration style over
-XML, if you want to keep your build file small, or if you have to share your
-configuration with developers who don't use Ant.
-<p>
-
-<h3>2. Embedded ProGuard configuration options</h3>
-
-Instead of keeping an external ProGuard configuration file, you can also copy
-the contents of the file into the nested text of the <code>proguard</code> task
-(the PCDATA area). Your Ant build file will then look like this:
-<p>
-
-<pre>
-&lt;taskdef resource="proguard/ant/task.properties"
- classpath="/usr/local/java/proguard/lib/proguard.jar" /&gt;
-&lt;proguard&gt;
- -libraryjars ${java.home}/lib/rt.jar
- -injars in.jar
- -outjars out.jar
-
- -keepclasseswithmembers public class * {
- public static void main(java.lang.String[]);
- }
-&lt;/proguard&gt;
-</pre>
-<p>
-
-Some minor syntactical changes are required in order to conform with the XML
-standard.
-<p>
-
-Firstly, the <code>#</code> character cannot be used for comments in an XML
-file. Comments must be enclosed by an opening <code>&lt;!--</code> and a
-closing <code>--&gt;</code>. All occurrences of the <code>#</code> character
-can be removed.
-<p>
-
-Secondly, the use of <code>&lt;</code> and <code>&gt;</code> characters would
-upset the structure of the XML build file. Environment variables can be
-specified with the usual Ant style <code>${...}</code>, instead of the ProGuard
-style <code>&lt;...&gt;</code>. Other occurrences of <code>&lt;</code> and
-<code>&gt;</code> have to be encoded as <code>&amp;lt;</code> and
-<code>&amp;gt;</code> respectively.
-<p>
-
-<h3>3. XML configuration tags</h3>
-
-If you really prefer a full-blown XML configuration, you can replace the
-ProGuard configuration options by XML configuration tags. The resulting
-configuration will be equivalent, but much more verbose and difficult to read,
-as XML goes. The remainder of this page presents the supported tags. For a
-more extensive discussion of their meaning, please consult the traditional <a
-href="usage.html">Usage</a> section. You can find some sample configuration
-files in the <code>examples/ant</code> directory of the ProGuard distribution.
-<p>
-
-<h2><a name="proguard">Task Attributes and Nested Elements</a></h2>
-
-The <code><b>&lt;proguard&gt;</b></code> task and the
-<code><b>&lt;proguardconfiguration&gt;</b></code> task can have the following
-attributes (only for <code>&lt;proguard&gt;</code>) and nested
-elements:
-
-<dl>
-
-<dt><a name="configuration_attribute"><code><b>configuration</b></code></a>
- = "<i>filename</i>"</dt>
-<dd>Read and merge options from the given ProGuard-style configuration
- file. Note: for reading multiple configuration files or XML-style
- configurations, use the <a
- href="#configuration_element"><code>configuration</code></a>
- <i>element</i>.</dd>
-
-<dt><a href="usage.html#skipnonpubliclibraryclasses"><code><b>skipnonpubliclibraryclasses</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Ignore non-public library classes.</dd>
-
-<dt><a href="usage.html#dontskipnonpubliclibraryclassmembers"><code><b>skipnonpubliclibraryclassmembers</b></code></a>
- = "<i>boolean</i>"
- (default = true)</dt>
-<dd>Ignore package visible library class members.</dd>
-
-<dt><a href="usage.html#target"><code><b>target</b></code></a>
- = "<i>version</i>"
- (default = none)</dt>
-<dd>Set the given version number in the processed classes.</dd>
-
-<dt><a href="usage.html#forceprocessing"><code><b>forceprocessing</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Process the input, even if the output seems up to date.</dd>
-
-<dt><a href="usage.html#printseeds"><code><b>printseeds</b></code></a>
- = "<i>boolean or filename</i>"
- (default = false)</dt>
-<dd>List classes and class members matched by the various <code>keep</code>
- commands, to the standard output or to the given file.</dd>
-
-<dt><a href="usage.html#dontshrink"><code><b>shrink</b></code></a>
- = "<i>boolean</i>"
- (default = true)</dt>
-<dd>Shrink the input class files.</dd>
-
-<dt><a href="usage.html#printusage"><code><b>printusage</b></code></a>
- = "<i>boolean or filename</i>"
- (default = false)</dt>
-<dd>List dead code of the input class files, to the standard output or to the
- given file.</dd>
-
-<dt><a href="usage.html#dontoptimize"><code><b>optimize</b></code></a>
- = "<i>boolean</i>"
- (default = true)</dt>
-<dd>Optimize the input class files.</dd>
-
-<dt><a href="usage.html#optimizationpasses"><code><b>optimizationpasses</b></code></a>
- = "<i>n</i>"
- (default = 1)</dt>
-<dd>The number of optimization passes to be performed.</dd>
-
-<dt><a href="usage.html#allowaccessmodification"><code><b>allowaccessmodification</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Allow the access modifiers of classes and class members to be modified,
- while optimizing.</dd>
-
-<dt><a href="usage.html#mergeinterfacesaggressively"><code><b>mergeinterfacesaggressively</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Allow any interfaces to be merged, while optimizing.</dd>
-
-<dt><a href="usage.html#dontobfuscate"><code><b>obfuscate</b></code></a>
- = "<i>boolean</i>"
- (default = true)</dt>
-<dd>Obfuscate the input class files.</dd>
-
-<dt><a href="usage.html#printmapping"><code><b>printmapping</b></code></a>
- = "<i>boolean or filename</i>"
- (default = false)</dt>
-<dd>Print the mapping from old names to new names for classes and class members
- that have been renamed, to the standard output or to the given file.</dd>
-
-<dt><a href="usage.html#applymapping"><code><b>applymapping</b></code></a>
- = "<i>filename</i>"
- (default = none)</dt>
-<dd>Reuse the given mapping, for incremental obfuscation.</dd>
-
-<dt><a href="usage.html#obfuscationdictionary"><code><b>obfuscationdictionary</b></code></a>
- = "<i>filename</i>"
- (default = none)</dt>
-<dd>Use the words in the given text file as obfuscated field names and method
- names.</dd>
-
-<dt><a href="usage.html#classobfuscationdictionary"><code><b>classobfuscationdictionary</b></code></a>
- = "<i>filename</i>"
- (default = none)</dt>
-<dd>Use the words in the given text file as obfuscated class names.</dd>
-
-<dt><a href="usage.html#packageobfuscationdictionary"><code><b>packageobfuscationdictionary</b></code></a>
- = "<i>filename</i>"
- (default = none)</dt>
-<dd>Use the words in the given text file as obfuscated package names.</dd>
-
-<dt><a href="usage.html#overloadaggressively"><code><b>overloadaggressively</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Apply aggressive overloading while obfuscating.</dd>
-
-<dt><a href="usage.html#useuniqueclassmembernames"><code><b>useuniqueclassmembernames</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Ensure uniform obfuscated class member names for subsequent incremental
- obfuscation.</dd>
-
-<dt><a href="usage.html#dontusemixedcaseclassnames"><code><b>usemixedcaseclassnames</b></code></a>
- = "<i>boolean</i>"
- (default = true)</dt>
-<dd>Generate mixed-case class names while obfuscating.</dd>
-
-<dt><a href="usage.html#flattenpackagehierarchy"><code><b>flattenpackagehierarchy</b></code></a>
- = "<i>package_name</i>"
- (default = none)</dt>
-<dd>Repackage all packages that are renamed into the single given parent
- package.</dd>
-
-<dt><a href="usage.html#repackageclasses"><code><b>repackageclasses</b></code></a>
- = "<i>package_name</i>"
- (default = none)</dt>
-<dd>Repackage all class files that are renamed into the single given
- package.</dd>
-
-<dt><a href="usage.html#keepparameternames"><code><b>keepparameternames</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Keep the parameter names and types of methods that are kept.</dd>
-
-<dt><a href="usage.html#renamesourcefileattribute"><code><b>renamesourcefileattribute</b></code></a>
- = "<i>string</i>"
- (default = none)</dt>
-<dd>Put the given constant string in the <code>SourceFile</code>
- attributes.</dd>
-
-<dt><a href="usage.html#dontpreverify"><code><b>preverify</b></code></a>
- = "<i>boolean</i>"
- (default = true)</dt>
-<dd>Preverify the processed class files if they are targeted at Java Micro
- Edition or at Java 6 or higher.</dd>
-
-<dt><a href="usage.html#microedition"><code><b>microedition</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Target the processed class files at Java Micro Edition.</dd>
-
-<dt><a href="usage.html#verbose"><code><b>verbose</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Write out some more information during processing.</dd>
-
-<dt><a href="usage.html#dontnote"><code><b>note</b></code></a>
- = "<i>boolean</i>"
- (default = true)</dt>
-<dd>Print notes about potential mistakes or omissions in the configuration.
- Use the nested element <a href="#dontnote">dontnote</a> for more
- fine-grained control.</dd>
-
-<dt><a href="usage.html#dontwarn"><code><b>warn</b></code></a>
- = "<i>boolean</i>"
- (default = true)</dt>
-<dd>Print warnings about unresolved references. Use the nested
- element <a href="#dontwarn">dontwarn</a> for more fine-grained
- control. <i>Only use this option if you know what you're doing!</i></dd>
-
-<dt><a href="usage.html#ignorewarnings"><code><b>ignorewarnings</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Print warnings about unresolved references, but continue processing
- anyhow. <i>Only use this option if you know what you're doing!</i></dd>
-
-<dt><a href="usage.html#printconfiguration"><code><b>printconfiguration</b></code></a>
- = "<i>boolean or filename</i>"
- (default = false)</dt>
-<dd>Write out the entire configuration in traditional ProGuard style, to the
- standard output or to the given file. Useful to replace unreadable
- XML configurations.</dd>
-
-<dt><a href="usage.html#dump"><code><b>dump</b></code></a>
- = "<i>boolean or filename</i>"
- (default = false)</dt>
-<dd>Write out the internal structure of the processed class files, to the
- standard output or to the given file.</dd>
-
-<dt><a href="usage.html#injars"><code><b>&lt;injar</b></code></a>
- <a href="#classpath"><i>class_path</i></a>
- <code><b>/&gt;</b></code></dt>
-<dd>Specifies the program jars (or aars, wars, ears, zips, apks, or
- directories).</dd>
-
-<dt><a href="usage.html#outjars"><code><b>&lt;outjar</b></code></a>
- <a href="#classpath"><i>class_path</i></a>
- <code><b>/&gt;</b></code></dt>
-<dd>Specifies the names of the output jars (or aars, wars, ears, zips, apks, or
- directories).</dd>
-
-<dt><a href="usage.html#libraryjars"><code><b>&lt;libraryjar</b></code></a>
- <a href="#classpath"><i>class_path</i></a>
- <code><b>/&gt;</b></code></dt>
-<dd>Specifies the library jars (or aars, wars, ears, zips, apks, or
- directories).</dd>
-
-<dt><a href="usage.html#keepdirectories"><code><b>&lt;keepdirectory name = </b></code></a>"<i>directory_name</i>"
- <code><b>/&gt;</b></code><br/>
- <a href="usage.html#keepdirectories"><code><b>&lt;keepdirectories filter = </b></code></a>"<a href="usage.html#filefilters"><i>directory_filter</i></a>"
- <code><b>/&gt;</b></code></dt>
-<dd>Keep the specified directories in the output jars (or aars, wars, ears,
- zips, apks, or directories).</dd>
-
-<dt><a href="usage.html#keep"><code><b>&lt;keep</b></code></a>
- <a href="#keepmodifier"><i>modifiers</i></a>
- <a href="#classspecification"><i>class_specification</i></a>
- <code><b>&gt;</b></code>
- <a href="#classmemberspecification"><i>class_member_specifications</i></a>
- <code><b>&lt;/keep&gt;</b></code></dt>
-<dd>Preserve the specified classes <i>and</i> class members.</dd>
-
-<dt><a href="usage.html#keepclassmembers"><code><b>&lt;keepclassmembers</b></code></a>
- <a href="#keepmodifier"><i>modifiers</i></a>
- <a href="#classspecification"><i>class_specification</i></a>
- <code><b>&gt;</b></code>
- <a href="#classmemberspecification"><i>class_member_specifications</i></a>
- <code><b>&lt;/keepclassmembers&gt;</b></code></dt>
-<dd>Preserve the specified class members, if their classes are preserved as
- well.</dd>
-
-<dt><a href="usage.html#keepclasseswithmembers"><code><b>&lt;keepclasseswithmembers</b></code></a>
- <a href="#keepmodifier"><i>modifiers</i></a>
- <a href="#classspecification"><i>class_specification</i></a>
- <code><b>&gt;</b></code>
- <a href="#classmemberspecification"><i>class_member_specifications</i></a>
- <code><b>&lt;/keepclasseswithmembers&gt;</b></code></dt>
-<dd>Preserve the specified classes <i>and</i> class members, if all of the
- specified class members are present.</dd>
-
-<dt><a href="usage.html#keepnames"><code><b>&lt;keepnames</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a>
- <code><b>&gt;</b></code>
- <a href="#classmemberspecification"><i>class_member_specifications</i></a>
- <code><b>&lt;/keepnames&gt;</b></code></dt>
-<dd>Preserve the names of the specified classes <i>and</i> class members (if
- they aren't removed in the shrinking step).</dd>
-
-<dt><a href="usage.html#keepclassmembernames"><code><b>&lt;keepclassmembernames</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a>
- <code><b>&gt;</b></code>
- <a href="#classmemberspecification"><i>class_member_specifications</i></a>
- <code><b>&lt;/keepclassmembernames&gt;</b></code></dt>
-<dd>Preserve the names of the specified class members (if they aren't removed
- in the shrinking step).</dd>
-
-<dt><a href="usage.html#keepclasseswithmembernames"><code><b>&lt;keepclasseswithmembernames</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a>
- <code><b>&gt;</b></code>
- <a href="#classmemberspecification"><i>class_member_specifications</i></a>
- <code><b>&lt;/keepclasseswithmembernames&gt;</b></code></dt>
-<dd>Preserve the names of the specified classes <i>and</i> class members, if
- all of the specified class members are present (after the shrinking
- step).</dd>
-
-<dt><a href="usage.html#whyareyoukeeping"><code><b>&lt;whyareyoukeeping</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a>
- <code><b>&gt;</b></code>
- <a href="#classmemberspecification"><i>class_member_specifications</i></a>
- <code><b>&lt;/whyareyoukeeping&gt;</b></code></dt>
-<dd>Print details on why the given classes and class members are being kept in
- the shrinking step.</dd>
-
-<dt><a href="usage.html#assumenosideeffects"><code><b>&lt;assumenosideeffects</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a>
- <code><b>&gt;</b></code>
- <a href="#classmemberspecification"><i>class_member_specifications</i></a>
- <code><b>&lt;/assumenosideeffects&gt;</b></code></dt>
-<dd>Assume that the specified methods don't have any side effects, while
- optimizing. <i>Only use this option if you know what you're
- doing!</i></dd>
-
-<dt><a href="usage.html#optimizations"><code><b>&lt;optimization name = </b></code></a>"<a href="optimizations.html"><i>optimization_name</i></a>"
- <code><b>/&gt;</b></code><br/>
- <a href="usage.html#optimizations"><code><b>&lt;optimizations filter = </b></code></a>""<a href="optimizations.html"><i>optimization_filter</i></a>"
- <code><b>/&gt;</b></code></dt>
-<dd>Perform only the specified optimizations.</dd>
-
-<dt><a href="usage.html#keeppackagenames"><code><b>&lt;keeppackagename name = </b></code></a>"<i>package_name</i>"
- <code><b>/&gt;</b></code><br/>
- <a href="usage.html#keeppackagenames"><code><b>&lt;keeppackagenames filter = </b></code></a>"<a href="usage.html#filters"><i>package_filter</i></a>"
- <code><b>/&gt;</b></code></dt>
-<dd>Keep the specified package names from being obfuscated. If no name is
- given, all package names are preserved.</dd>
-
-<dt><a href="usage.html#keepattributes"><code><b>&lt;keepattribute name = </b></code></a>"<i>attribute_name</i>"
- <code><b>/&gt;</b></code><br/>
- <a href="usage.html#keepattributes"><code><b>&lt;keepattributes filter = </b></code></a>"<a href="usage.html#filters"><i>attribute_filter</i></a>"
- <code><b>/&gt;</b></code></dt>
-<dd>Preserve the specified optional Java bytecode attributes, with optional
- wildcards. If no name is given, all attributes are preserved.</dd>
-
-<dt><a href="usage.html#adaptclassstrings"><code><b>&lt;adaptclassstrings filter = </b></code></a>"<a href="usage.html#filters"><i>class_filter</i></a>"
- <code><b>/&gt;</b></code></dt>
-<dd>Adapt string constants in the specified classes, based on the obfuscated
- names of any corresponding classes.</dd>
-
-<dt><a href="usage.html#adaptresourcefilenames"><code><b>&lt;adaptresourcefilenames filter = </b></code></a>"<a href="usage.html#filefilters"><i>file_filter</i></a>"
- <code><b>/&gt;</b></code></dt>
-<dd>Rename the specified resource files, based on the obfuscated names of the
- corresponding class files.</dd>
-
-<dt><a href="usage.html#adaptresourcefilecontents"><code><b>&lt;adaptresourcefilecontents filter = </b></code></a>"<a href="usage.html#filefilters"><i>file_filter</i></a>"
- <code><b>/&gt;</b></code></dt>
-<dd>Update the contents of the specified resource files, based on the
- obfuscated names of the processed classes.</dd>
-
-<dt><a name="dontnote" />
- <a href="usage.html#dontnote"><code><b>&lt;dontnote filter = </b></code></a>"<a href="usage.html#filters"><i>class_filter</i></a>"
- <code><b>/&gt;</b></code></dt>
-<dd>Don't print notes about classes matching the specified class name
- filter.</dd>
-
-<dt><a name="dontwarn" />
- <a href="usage.html#dontwarn"><code><b>&lt;dontwarn filter = </b></code></a>"<a href="usage.html#filters"><i>class_filter</i></a>"
- <code><b>/&gt;</b></code></dt>
-<dd>Don't print warnings about classes matching the specified class name
- filter. <i>Only use this option if you know what you're doing!</i></dd>
-
-<dt><a name="configuration_element"><code><b>&lt;configuration refid = </b></code></a>"<i>ref_id</i>"
- <code><b>/&gt;</b></code><br/>
- <code><b>&lt;configuration file = </b></code>"<i>name</i>"
- <code><b>/&gt;</b></code></dt>
-<dd>The first form includes the XML-style configuration specified in a
- <code>&lt;proguardconfiguration&gt;</code> task (or
- <code>&lt;proguard&gt;</code> task) with attribute <code>id</code> =
- "<i>ref_id</i>". Only the nested elements of this configuration are
- considered, not the attributes.
- <p>
- The second form includes the ProGuard-style configuration from the specified
- file. The element is actually a <code>fileset</code> element and supports
- all of its attributes and nested elements, including multiple files.
- </dd>
-
-</dl>
-
-<h2><a name="classpath">Class Path Attributes and Nested Elements</a></h2>
-
-The jar elements are <code>path</code> elements, so they can have any of the
-standard <code>path</code> attributes and nested elements. The most common
-attributes are:
-
-<dl>
-
-<dt><code><b>path</b></code> = "<i>path</i>"</dt>
-<dd>The names of the jars (or aars, wars, ears, zips, apks, or directories),
- separated by the path separator.</dd>
-
-<dt><code><b>location</b></code> = "<i>name</i>" (or <code><b>file</b></code>
- = "<i>name</i>", or <code><b>dir</b></code> = "<i>name</i>", or
- <code><b>name</b></code> = "<i>name</i>")</dt>
-<dd>Alternatively, the name of a single jar (or aar, war, ear, zip, or
- directory).</dd>
-
-<dt><code><b>refid</b></code> = "<i>ref_id</i>"</dt>
-<dd>Alternatively, a reference to the path or file set with the attribute
- <code>id</code> = "<i>ref_id</i>".</dd>
-
-</dl>
-
-In addition, the jar elements can have ProGuard-style filter attributes:
-
-<dl>
-
-<dt><code><b>filter</b></code> =
- "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
-<dd>An optional filter for all class file names and resource file names that
- are encountered.</dd>
-
-<dt><code><b>apkfilter</b></code> =
- "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
-<dd>An optional filter for all apk names that are encountered.</dd>
-
-<dt><code><b>jarfilter</b></code> =
- "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
-<dd>An optional filter for all jar names that are encountered.</dd>
-
-<dt><code><b>aarfilter</b></code> =
- "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
-<dd>An optional filter for all aar names that are encountered.</dd>
-
-<dt><code><b>warfilter</b></code> =
- "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
-<dd>An optional filter for all war names that are encountered.</dd>
-
-<dt><code><b>earfilter</b></code> =
- "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
-<dd>An optional filter for all ear names that are encountered.</dd>
-
-<dt><code><b>zipfilter</b></code> =
- "<a href="usage.html#filefilters"><i>file_filter</i></a>"</dt>
-<dd>An optional filter for all zip names that are encountered.</dd>
-
-</dl>
-
-<h2><a name="keepmodifier">Keep Modifier Attributes</a></h2>
-
-The keep tags can have the following <i>modifier</i> attributes:
-
-<dl>
-
-<dt><a href="usage.html#includedescriptorclasses"><code><b>includedescriptorclasses</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Specifies whether the classes of the fields and methods specified in the
- keep tag must be kept as well.</dd>
-
-<dt><a href="usage.html#allowshrinking"><code><b>allowshrinking</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Specifies whether the entry points specified in the keep tag may be
- shrunk.</dd>
-
-<dt><a href="usage.html#allowoptimization"><code><b>allowoptimization</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Specifies whether the entry points specified in the keep tag may be
- optimized.</dd>
-
-<dt><a href="usage.html#allowobfuscation"><code><b>allowobfuscation</b></code></a>
- = "<i>boolean</i>"
- (default = false)</dt>
-<dd>Specifies whether the entry points specified in the keep tag may be
- obfuscated.</dd>
-
-</dl>
-
-<h2><a name="classspecification">Class Specification Attributes and Nested Elements</a></h2>
-
-The keep tags can have the following <i>class_specification</i> attributes and
-<i>class_member_specifications</i> nested elements:
-
-<dl>
-
-<dt><code><b>access</b></code> = "<i>access_modifiers</i>"</dt>
-<dd>The optional access modifiers of the class. Any space-separated list of
- "public", "final", and "abstract", with optional negators "!".</dd>
-
-<dt><code><b>annotation</b></code> = "<i>annotation_name</i>"</dt>
-<dd>The optional fully qualified name of an annotation of the class, with
- optional wildcards.</dd>
-
-<dt><code><b>type</b></code> = "<i>type</i>"</dt>
-<dd>The optional type of the class: one of "class", "interface", or
- "!interface".</dd>
-
-<dt><code><b>name</b></code> = "<i>class_name</i>"</dt>
-<dd>The optional fully qualified name of the class, with optional
- wildcards.</dd>
-
-<dt><code><b>extendsannotation</b></code> = "<i>annotation_name</i>"</dt>
-<dd>The optional fully qualified name of an annotation of the the class that
- the specified classes must extend, with optional wildcards.</dd>
-
-<dt><code><b>extends</b></code> = "<i>class_name</i>"</dt>
-<dd>The optional fully qualified name of the class the specified classes
- must extend, with optional wildcards.</dd>
-
-<dt><code><b>implements</b></code> = "<i>class_name</i>"</dt>
-<dd>The optional fully qualified name of the class the specified classes
- must implement, with optional wildcards.</dd>
-
-<dt><code><b>&lt;field</b></code>
- <a href="#classmemberspecification"><i>class_member_specification</i></a>
- <code><b>/&gt;</b></code></dt>
-<dd>Specifies a field.</dd>
-
-<dt><code><b>&lt;method</b></code>
- <a href="#classmemberspecification"><i>class_member_specification</i></a>
- <code><b>/&gt;</b></code></dt>
-<dd>Specifies a method.</dd>
-
-<dt><code><b>&lt;constructor</b></code>
- <a href="#classmemberspecification"><i>class_member_specification</i></a>
- <code><b>/&gt;</b></code></dt>
-<dd>Specifies a constructor.</dd>
-
-</dl>
-
-<h2><a name="classmemberspecification">Class Member Specification Attributes</a></h2>
-
-The class member tags can have the following <i>class_member_specification</i>
-attributes:
-
-<dl>
-
-<dt><code><b>access</b></code> = "<i>access_modifiers</i>"</dt>
-<dd>The optional access modifiers of the class. Any space-separated list of
- "public", "protected", "private", "static", etc., with optional negators
- "!".</dd>
-
-<dt><code><b>annotation</b></code> = "<i>annotation_name</i>"</dt>
-<dd>The optional fully qualified name of an annotation of the class member,
- with optional wildcards.</dd>
-
-<dt><code><b>type</b></code> = "<i>type</i>"</dt>
-<dd>The optional fully qualified type of the class member, with optional
- wildcards. Not applicable for constructors, but required for methods for
- which the <code>parameters</code> attribute is specified.</dd>
-
-<dt><code><b>name</b></code> = "<i>name</i>"</dt>
-<dd>The optional name of the class member, with optional wildcards. Not
- applicable for constructors.</dd>
-
-<dt><code><b>parameters</b></code> = "<i>parameters</i>"</dt>
-<dd>The optional comma-separated list of fully qualified method parameters,
- with optional wildcards. Not applicable for fields, but required for
- constructors, and for methods for which the <code>type</code> attribute is
- specified.</dd>
-
-</dl>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/attention.gif b/docs/manual/attention.gif
deleted file mode 100644
index 1a0c712..0000000
--- a/docs/manual/attention.gif
+++ /dev/null
Binary files differ
diff --git a/docs/manual/attributes.html b/docs/manual/attributes.html
deleted file mode 100644
index 08265e7..0000000
--- a/docs/manual/attributes.html
+++ /dev/null
@@ -1,217 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>Attributes</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/attributes.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/attributes.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Attributes</h2>
-
-Class files essentially define classes, their fields, and their methods. A lot
-of essential and non-essential data are attached to these classes, fields, and
-methods as <i>attributes</i>. For instance, attributes can contain bytecode,
-source file names, line number tables, etc.
-<p>
-
-ProGuard's obfuscation step removes attributes that are generally not
-necessary for executing the code. With
-the <a href="usage.html#keepattributes"><code>-keepattributes</code></a>
-option, you can specify a filter for attributes that you do want to keep, for
-instance, if your code accesses them through reflection or if you want to
-preserve some compilation or debugging information. The filter works like
-any <a href="usage.html#filters">filter</a> in ProGuard.
-<p>
-
-The following wildcards are supported:
-
-<table cellspacing="10">
-<tr><td valign="top"><code><b>?</b></code></td>
- <td>matches any single character in an attribute name.</td></tr>
-<tr><td valign="top"><code><b>*</b></code></td>
- <td>matches any part of an attribute name.</td></tr>
-</table>
-
-An attribute name that is preceded by an exclamation mark '<b>!</b>' is
-<i>excluded</i> from further attempts to match with <i>subsequent</i>
-attribute names in the filter. Make sure to specify filters correctly, since
-they are not checked for potential typos.
-<p>
-
-For example, the following setting preserves the optional attributes that are
-typically necessary when processing code that is intended to be used as a
-library:
-<pre>
--keepattributes Exceptions,InnerClasses,Signature,Deprecated,
- SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-</pre>
-<p>
-
-The Java bytecode specifications currently specify the following list of
-attributes.
-
-<h3>Optional attributes</h3>
-
-ProGuard's obfuscation step by default discards the following optional
-attributes. You can keep them with
-the <a href="usage.html#keepattributes"><code>-keepattributes</code></a>
-option.
-
-<dl>
-<dt><code><b>SourceFile</b></code></dt>
-<dd>Specifies the name of the source file from which the class file was
- compiled. If present, this name is reported in stack traces.</dd>
-
-<dt><div>(J++ extension)</div>
- <code><b>SourceDir</b></code></dt>
-<dd>Specifies the name of the source directory from which the class file was
- compiled.</dd>
-
-<dt><code><b>InnerClasses</b></code></dt>
-<dd>Specifies the relationship between a class and its inner classes and outer
- classes. Other than this and the naming convention with a '$' separator
- between the names of inner classes and outer classes, inner classes are
- just like ordinary classes. Compilers may need this information to find
- classes referenced in a compiled library. Code may access this information
- by reflection, for instance to derive the simple name of the class.</dd>
-
-<dt><div>(Java 5 or higher)</div>
- <code><b>EnclosingMethod</b></code></dt>
-<dd>Specifies the method in which the class was defined. Compilers may need
- this information to find classes referenced in a compiled library. Code
- may access this information by reflection, for instance to derive the
- simple name of the class.</dd>
-
-<dt><code><b>Deprecated</b></code></dt>
-<dd>Indicates that the class, field, or method is deprecated.</dd>
-
-<dt><code><b>Synthetic</b></code></dt>
-<dd>Indicates that the class, field, or method was generated by the
- compiler.</dd>
-
-<dt><div>(Java 5 or higher)</div>
- <code><b>Signature</b></code></dt>
-<dd>Specifies the generic signature of the class, field, or method. Compilers
- may need this information to properly compile classes that use generic
- types from compiled libraries. Code may access this signature by
- reflection.</dd>
-
-<dt><div>(Java 8 or higher)</div>
- <code><b>MethodParameters</b></code></dt>
-<dd>Specifies the names and access flags of the parameters of the method. Code
- may access this information by reflection.</dd>
-
-<dt><code><b>Exceptions</b></code></dt>
-<dd>Specifies the exceptions that a method may throw. Compilers may use this
- information to enforce catching them.</dd>
-
-<dt><code><b>LineNumberTable</b></code></dt>
-<dd>Specifies the line numbers of the method. If present, these line numbers
- are reported in stack traces.</dd>
-
-<dt><code><b>LocalVariableTable</b></code></dt>
-<dd>Specifies the names and types of local variables of the method. If present,
- some IDEs may use this information for helping with auto-completion.</dd>
-
-<dt><div>(Java 5 or higher)</div>
- <code><b>LocalVariableTypeTable</b></code></dt>
-<dd>Specifies the names and generic types of local variables of the method. If
- present, some IDEs may use this information for helping with
- auto-completion.</dd>
-
-<dt><div>(Java 5 or higher)</div>
- <code><b>RuntimeVisibleAnnotations</b></code></dt>
-<dd>Specifies the annotations that are visible at run-time, for classes,
- fields, and methods. Compilers and annotation processors may use these
- annotations. Code may access them by reflection.</dd>
-
-<dt><div>(Java 5 or higher)</div>
- <code><b>RuntimeInvisibleAnnotations</b></code></dt>
-<dd>Specifies the annotations that are visible at compile-time, for classes,
- fields, and methods. Compilers and annotation processors may use these
- annotations.</dd>
-
-<dt><div>(Java 5 or higher)</div>
- <code><b>RuntimeVisibleParameterAnnotations</b></code></dt>
-<dd>Specifies the annotations that are visible at run-time, for method
- parameters. Compilers and annotation processors may use these
- annotations. Code may access them by reflection.</dd>
-
-<dt><div>(Java 5 or higher)</div>
- <code><b>RuntimeInvisibleParameterAnnotations</b></code></dt>
-<dd>Specifies the annotations that are visible at compile-time, for method
- parameters. Compilers and annotation processors may use these
- annotations.</dd>
-
-<dt><div>(Java 8 or higher)</div>
- <code><b>RuntimeVisibleTypeAnnotations</b></code></dt>
-<dd>Specifies the annotations that are visible at run-time, for generic types,
- instructions, etc. Compilers and annotation processors may use these
- annotations. Code may access them by reflection.</dd>
-
-<dt><div>(Java 8 or higher)</div>
- <code><b>RuntimeInvisibleTypeAnnotations</b></code></dt>
-<dd>Specifies the annotations that are visible at compile-time, for generic
- types, instructions, etc. Compilers and annotation processors may use
- these annotations.</dd>
-
-<dt><div>(Java 5 or higher)</div>
- <code><b>AnnotationDefault</b></code></dt>
-<dd>Specifies a default value for an annotation.</dd>
-
-</dl>
-<p>
-
-<h3>Essential attributes</h3>
-
-ProGuard automatically keeps the following essential attributes, processing
-them as necessary. We're listing them for the sake of completeness.
-
-<dl>
-<dt><code><b>ConstantValue</b></code></dt>
-<dd>Specifies a constant integer, float, class, string, etc.</dd>
-
-<dt><code><b>Code</b></code></dt>
-<dd>Specifies the actual bytecode of a method.</dd>
-
-<dt><div>(Java Micro Edition)</div>
- <code><b>StackMap</b></code></dt>
-<dd>Provides preverification information. The Java Virtual Machine can use
- this information to speed up the verification step when loading a
- class.</dd>
-
-<dt><div>(Java 6 or higher)</div>
- <code><b>StackMapTable</b></code></dt>
-<dd>Provides preverification information. The Java Virtual Machine can use
- this information to speed up the verification step when loading a
- class.</dd>
-
-<dt><div>(Java 7 or higher)</div>
- <code><b>BootstrapMethods</b></code></dt>
-<dd>Specifies the methods to bootstrap dynamic method invocations.</dd>
-
-</dl>
-<p>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/examples.html b/docs/manual/examples.html
deleted file mode 100644
index dec9613..0000000
--- a/docs/manual/examples.html
+++ /dev/null
@@ -1,1620 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Examples</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/examples.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/examples.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Examples</h2>
-
-Some typical useful configurations:
-<ol>
-<li><a href="#application">A typical application</a></li>
-<li><a href="#applet">A typical applet</a></li>
-<li><a href="#midlet">A typical midlet</a></li>
-<li><a href="#jcapplet">A typical Java Card applet</a></li>
-<li><a href="#xlet">A typical xlet</a></li>
-<li><a href="#androidactivity">A simple Android activity</a></li>
-<li><a href="#androidapplication">A complete Android application</a></li>
-<li><a href="#library">A typical library</a></li>
-<li><a href="#applications">All possible applications in the input jars</a></li>
-<li><a href="#applets">All possible applets in the input jars</a></li>
-<li><a href="#midlets">All possible midlets in the input jars</a></li>
-<li><a href="#jcapplets">All possible Java Card applets in the input jars</a></li>
-<li><a href="#xlets">All possible xlets in the input jars</a></li>
-<li><a href="#servlets">All possible servlets in the input jars</a></li>
-<li><a href="#scala">Scala applications with the Scala runtime</a></li>
-<li><a href="#native">Processing native methods</a></li>
-<li><a href="#callback">Processing callback methods</a></li>
-<li><a href="#enumerations">Processing enumeration classes</a></li>
-<li><a href="#serializable">Processing serializable classes</a></li>
-<li><a href="#beans">Processing bean classes</a></li>
-<li><a href="#annotations">Processing annotations</a></li>
-<li><a href="#database">Processing database drivers</a></li>
-<li><a href="#componentui">Processing ComponentUI classes</a></li>
-<li><a href="#rmi">Processing RMI code</a></li>
-<li><a href="#injection">Processing resource injection</a></li>
-<li><a href="#resourcefiles">Processing resource files</a></li>
-<li><a href="#manifestfiles">Processing manifest files</a></li>
-<li><a href="#stacktrace">Producing useful obfuscated stack traces</a></li>
-<li><a href="#repackaging">Obfuscating package names</a></li>
-<li><a href="#logging">Removing logging code</a></li>
-<li><a href="#restructuring">Restructuring the output archives</a></li>
-<li><a href="#filtering">Filtering the input and the output</a></li>
-<li><a href="#multiple">Processing multiple applications at once</a></li>
-<li><a href="#incremental">Incremental obfuscation</a></li>
-<li><a href="#microedition">Preverifying class files for Java Micro Edition</a></li>
-<li><a href="#upgrade">Upgrading class files to Java 6</a></li>
-<li><a href="#deadcode">Finding dead code</a></li>
-<li><a href="#structure">Printing out the internal structure of class files</a></li>
-<li><a href="#annotated">Using annotations to configure ProGuard</a></li>
-</ol>
-
-You can find some sample configuration files in the <code>examples</code>
-directory of the ProGuard distribution.
-
-<h3><a name="application">A typical application</a></h3>
-
-To shrink, optimize, and obfuscate a simple Java application, you typically
-create a configuration file like <code>myconfig.pro</code>, which can be used
-with
-<pre>
-bin/proguard @myconfig.pro
-</pre>
-<p>
-The configuration file specifies the input, the output, and the entry points
-of the application:
-<pre>
--injars myapplication.jar
--outjars myapplication_out.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
--printmapping myapplication.map
-
--keep public class mypackage.MyMain {
- public static void main(java.lang.String[]);
-}
-</pre>
-<p>
-Note the use of the <code>&lt;java.home&gt;</code> system property. ProGuard
-automatically replaces it when parsing the file.
-<p>
-The <a href="usage.html#keep"><code>-keep</code></a> option specifies the
-entry point of the application that has to be preserved.
-The access modifiers <code>public</code> and <code>static</code> are not
-really required in this case, since we know a priori that the specified class
-and method have the proper access flags. It just looks more familiar this way.
-<p>
-Note that all type names are fully specified:
-<code>mypackage.MyMain</code> and <code>java.lang.String[]</code>.
-<p>
-We're writing out an obfuscation mapping file with <a
-href="usage.html#printmapping"><code>-printmapping</code></a>, for
-de-obfuscating any stack traces later on, or for incremental obfuscation of
-extensions.
-<p>
-We can further improve the results with a few additional options:
-<pre>
--optimizationpasses 3
--overloadaggressively
--repackageclasses ''
--allowaccessmodification
-</pre>
-These options are not required; they just shave off some extra bytes from the
-output jar, by performing up to 3 optimization passes, and by aggressively
-obfuscating class members and <a href="#repackaging">package names</a>.
-<p>
-In general, you might need a few additional options for processing <a
-href="#native">native methods</a>, <a href="#callback">callback methods</a>,
-<a href="#enumerations">enumerations</a>, <a href="#serializable">serializable
-classes</a>, <a href="#beans">bean classes</a>, <a
-href="#annotations">annotations</a>, and <a href="#resourcefiles">resource
-files</a>.
-
-<h3><a name="applet">A typical applet</a></h3>
-
-These options shrink, optimize, and obfuscate the applet
-<code>mypackage.MyApplet</code>:
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
-
--keep public class mypackage.MyApplet
-</pre>
-<p>
-The typical applet methods will be preserved automatically, since
-<code>mypackage.MyApplet</code> is an extension of the <code>Applet</code>
-class in the library <code>rt.jar</code>.
-<p>
-If applicable, you should add options for processing <a href="#native">native
-methods</a>, <a href="#callback">callback methods</a>, <a
-href="#enumerations">enumerations</a>, <a href="#serializable">serializable
-classes</a>, <a href="#beans">bean classes</a>, <a
-href="#annotations">annotations</a>, and <a href="#resourcefiles">resource
-files</a>.
-
-<h3><a name="midlet">A typical midlet</a></h3>
-
-These options shrink, optimize, obfuscate, and preverify the midlet
-<code>mypackage.MyMIDlet</code>:
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars /usr/local/java/wtk2.5.2/lib/midpapi20.jar
--libraryjars /usr/local/java/wtk2.5.2/lib/cldcapi11.jar
--overloadaggressively
--repackageclasses ''
--allowaccessmodification
--microedition
-
--keep public class mypackage.MyMIDlet
-</pre>
-<p>
-Note how we're now targeting the Java Micro Edition run-time environment of
-<code>midpapi20.jar</code> and <code>cldcapi11.jar</code>, instead of the Java
-Standard Edition run-time environment <code>rt.jar</code>. You can target
-other JME environments by picking the appropriate jars.
-<p>
-The typical midlet methods will be preserved automatically, since
-<code>mypackage.MyMIDlet</code> is an extension of the <code>MIDlet</code>
-class in the library <code>midpapi20.jar</code>.
-<p>
-The <a href="usage.html#microedition"><code>-microedition</code></a> option
-makes sure the class files are preverified for Java Micro Edition, producing
-compact <code>StackMap</code> attributes. It is no longer necessary to run an
-external preverifier.
-<p>
-Be careful if you do use the external <code>preverify</code> tool on a platform
-with a case-insensitive filing system, such as Windows. Because this tool
-unpacks your processed jars, you should then use ProGuard's <a
-href="usage.html#dontusemixedcaseclassnames"><code>-dontusemixedcaseclassnames</code></a>
-option.
-<p>
-If applicable, you should add options for processing <a href="#native">native
-methods</a> and <a href="#resourcefiles">resource files</a>.
-<p>
-Note that you will still have to adapt the midlet jar size in the
-corresponding jad file; ProGuard doesn't do that for you.
-
-<h3><a name="jcapplet">A typical Java Card applet</a></h3>
-
-These options shrink, optimize, and obfuscate the Java Card applet
-<code>mypackage.MyApplet</code>:
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars /usr/local/java/javacard2.2.2/lib/api.jar
--dontwarn java.lang.Class
--overloadaggressively
--repackageclasses ''
--allowaccessmodification
-
--keep public class mypackage.MyApplet
-</pre>
-<p>
-The configuration is very similar to the configuration for midlets, except that
-it now targets the Java Card run-time environment. This environment doesn't
-have java.lang.Class, so we're telling ProGuard not to worry about it.
-
-<h3><a name="xlet">A typical xlet</a></h3>
-
-These options shrink, optimize, and obfuscate the xlet
-<code>mypackage.MyXlet</code>:
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars /usr/local/java/jtv1.1/javatv.jar
--libraryjars /usr/local/java/cdc1.1/lib/cdc.jar
--libraryjars /usr/local/java/cdc1.1/lib/btclasses.zip
--overloadaggressively
--repackageclasses ''
--allowaccessmodification
-
--keep public class mypackage.MyXlet
-</pre>
-<p>
-The configuration is very similar to the configuration for midlets, except that
-it now targets the CDC run-time environment with the Java TV API.
-
-<h3><a name="androidactivity">A simple Android activity</a></h3>
-
-These options shrink, optimize, and obfuscate the single Android
-activity <code>mypackage.MyActivity</code>:
-<pre>
--injars bin/classes
--outjars bin/classes-processed.jar
--libraryjars /usr/local/java/android-sdk/platforms/android-9/android.jar
-
--dontpreverify
--repackageclasses ''
--allowaccessmodification
--optimizations !code/simplification/arithmetic
-
--keep public class mypackage.MyActivity
-</pre>
-<p>
-We're targeting the Android run-time and keeping the activity as an entry
-point.
-<p>
-Preverification is irrelevant for the dex compiler and the Dalvik VM, so we
-can switch it off with the
-<a href="usage.html#dontpreverify"><code>-dontpreverify</code></a> option.
-<p>
-The <a href="usage.html#optimizations"><code>-optimizations</code></a> option
-disables some arithmetic simplifications that Dalvik 1.0 and 1.5 can't handle.
-Note that the Dalvik VM also can't
-handle <a href="usage.html#overloadaggressively">aggressive overloading</a>
-(of static fields).
-<p>
-If applicable, you should add options for processing <a href="#native">native
-methods</a>, <a href="#callback">callback methods</a>,
-<a href="#enumerations">enumerations</a>,
-<a href="#annotations">annotations</a>, and
-<a href="#resourcefiles">resource files</a>.
-
-<h3><a name="androidapplication">A complete Android application</a></h3>
-
-<img class="float" src="attention.gif" width="64" height="64" alt="attention"
-/> The standard build processes of the Android SDK (with Ant, Gradle, Android
-Studio, and Eclipse) already integrate ProGuard with all the proper settings.
-You only need to enable ProGuard by uncommenting the line
-"<code>proguard.config=.....</code>" in the
-file <code>project.properties</code> (created or updated by Android SDK
-revision 17 or higher) or by adapting your <code>build.gradle</code> file. You
-then <em>don't</em> need any of the configuration below.
-<p>
-Notes:
-<ul>
-<li>In case of problems, you may want to check if the configuration files that
- are listed on this line (<code>proguard-project.txt</code>,...) contain
- the necessary settings for your application.</li>
-<li>Android SDK revision 20 and higher have a different configuration file for
- enabling optimization:
- <code>${sdk.dir}/tools/proguard/proguard-android-optimize.txt</code>
- instead of the default
- <code>${sdk.dir}/tools/proguard/proguard-android.txt</code>.</li>
-<li>The build processes are already setting the necessary program jars,
- library jars, and output jars for you &mdash; don't specify them again.</li>
-<li>If you get warnings about missing referenced classes: it's all too common
- that libraries refer to missing classes.
- See <a href="troubleshooting.html#unresolvedclass">"Warning: can't find
- referenced class"</a> in the Troubleshooting section.</li>
-</ul>
-<p>
-For more information, you can consult the official <a target="other"
-href="http://developer.android.com/guide/developing/tools/proguard.html">Developer
-Guide</a> in the Android SDK.
-<p>
-If you're constructing a build process <em>from scratch</em>: these options
-shrink, optimize, and obfuscate all public activities, services, broadcast
-receivers, and content providers from the compiled classes and external
-libraries:
-<pre>
--injars bin/classes
--injars libs
--outjars bin/classes-processed.jar
--libraryjars /usr/local/java/android-sdk/platforms/android-9/android.jar
-
--dontpreverify
--repackageclasses ''
--allowaccessmodification
--optimizations !code/simplification/arithmetic
--keepattributes *Annotation*
-
--keep public class * extends android.app.Activity
--keep public class * extends android.app.Application
--keep public class * extends android.app.Service
--keep public class * extends android.content.BroadcastReceiver
--keep public class * extends android.content.ContentProvider
-
--keep public class * extends android.view.View {
- public &lt;init&gt;(android.content.Context);
- public &lt;init&gt;(android.content.Context, android.util.AttributeSet);
- public &lt;init&gt;(android.content.Context, android.util.AttributeSet, int);
- public void set*(...);
-}
-
--keepclasseswithmembers class * {
- public &lt;init&gt;(android.content.Context, android.util.AttributeSet);
-}
-
--keepclasseswithmembers class * {
- public &lt;init&gt;(android.content.Context, android.util.AttributeSet, int);
-}
-
--keepclassmembers class * extends android.content.Context {
- public void *(android.view.View);
- public void *(android.view.MenuItem);
-}
-
--keepclassmembers class * implements android.os.Parcelable {
- static ** CREATOR;
-}
-
--keepclassmembers class **.R$* {
- public static &lt;fields&gt;;
-}
-
--keepclassmembers class * {
- @android.webkit.JavascriptInterface &lt;methods&gt;;
-}
-</pre>
-<p>
-Most importantly, we're keeping all fundamental classes that may be referenced
-by the <code>AndroidManifest.xml</code> file of the application. If your
-manifest file contains other classes and methods, you may have to specify
-those as well.
-<p>
-We're keeping annotations, since they might be used by custom
-<code>RemoteViews</code>.
-<p>
-We're keeping any custom <code>View</code> extensions and other classes with
-typical constructors, since they might be referenced from XML layout files.
-<p>
-We're also keeping possible <code>onClick</code> handlers in
-custom <code>Context</code> extensions, since they might be referenced from
-XML layout files.
-<p>
-We're also keeping the required static fields in <code>Parcelable</code>
-implementations, since they are accessed by introspection.
-<p>
-We're keeping the static fields of referenced inner classes of auto-generated
- <code>R</code> classes, just in case your code is accessing those fields by
-introspection. Note that the compiler already inlines primitive fields, so
-ProGuard can generally remove all these classes entirely anyway (because the
-classes are not referenced and therefore not required).
-<p>
-Finally, we're keeping annotated Javascript interface methods, so they can be
-exported and accessed by their original names. Javascript interface methods
-that are not annotated (in code targeted at Android versions older than 4.2)
-still need to be preserved manually.
-<p>
-If you're using additional Google APIs, you'll have to specify
-those as well, for instance:
-<pre>
--libraryjars /usr/local/android-sdk/add-ons/google_apis-7_r01/libs/maps.jar
-</pre>
-<p>
-If you're using Google's optional License Verification Library, you can
-obfuscate its code along with your own code. You do have to preserve
-its <code>ILicensingService</code> interface for the library to work:
-<pre>
--keep public interface com.android.vending.licensing.ILicensingService
-</pre>
-<p>
-If you're using the Android Compatibility library, you should add the
-following line, to let ProGuard know it's ok that the library references some
-classes that are not available in all versions of the API:
-<pre>
--dontwarn android.support.**
-</pre>
-<p>
-If applicable, you should add options for processing <a href="#native">native
-methods</a>, <a href="#callback">callback methods</a>,
-<a href="#enumerations">enumerations</a>,
-and <a href="#resourcefiles">resource files</a>. You may also want to add
-options for producing <a href="#stacktrace">useful stack traces</a> and
-to <a href="#logging">remove logging</a>. You can find a complete sample
-configuration in <code>examples/android.pro</code> in the ProGuard
-distribution.
-
-<h3><a name="library">A typical library</a></h3>
-
-These options shrink, optimize, and obfuscate an entire library, keeping all
-public and protected classes and class members, native method names, and
-serialization code. The processed version of the library can then still be
-used as such, for developing code based on its public API.
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
--printmapping out.map
-
--keepparameternames
--renamesourcefileattribute SourceFile
--keepattributes Exceptions,InnerClasses,Signature,Deprecated,
- SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-
--keep public class * {
- public protected *;
-}
-
--keepclassmembernames class * {
- java.lang.Class class$(java.lang.String);
- java.lang.Class class$(java.lang.String, boolean);
-}
-
--keepclasseswithmembernames,includedescriptorclasses class * {
- native &lt;methods&gt;;
-}
-
--keepclassmembers,allowoptimization enum * {
- public static **[] values();
- public static ** valueOf(java.lang.String);
-}
-
--keepclassmembers class * implements java.io.Serializable {
- static final long serialVersionUID;
- private static final java.io.ObjectStreamField[] serialPersistentFields;
- private void writeObject(java.io.ObjectOutputStream);
- private void readObject(java.io.ObjectInputStream);
- java.lang.Object writeReplace();
- java.lang.Object readResolve();
-}
-</pre>
-<p>
-This configuration should preserve everything we'll ever want to access in the
-library. Only if there are any other non-public classes or methods that are
-invoked dynamically, they should be specified using additional <a
-href="usage.html#keep"><code>-keep</code></a> options.
-<p>
-The <a
-href="usage.html#keepclassmembernames"><code>-keepclassmembernames</code></a>
-option for the <code>class$</code> methods is not strictly necessary. These
-methods are inserted by the <code>javac</code> compiler and the
-<code>jikes</code> compiler respectively, in JDK 1.2 and older, to implement
-the <code>.class</code> construct. ProGuard will automatically detect them and
-deal with them, even when their names have been obfuscated. However, other
-obfuscators may rely on the original method names. It may therefore be helpful
-to preserve them, in case these other obfuscators are ever used for further
-obfuscation of the library.
-<p>
-The "Exceptions" attribute has to be preserved, so the compiler knows which
-exceptions methods may throw.
-<p>
-The "InnerClasses" attribute (or more precisely, its source name part) has to
-be preserved too, for any inner classes that can be referenced from outside the
-library. The <code>javac</code> compiler would be unable to find the inner
-classes otherwise.
-<p>
-The "Signature" attribute is required to be able to access generic types when
-compiling in JDK 5.0 and higher.
-<p>
-The <a href="usage.html#keepparameternames"><code>-keepparameternames</code></a>
-option keeps the parameter names in the "LocalVariableTable" and
-"LocalVariableTypeTable" attributes of public library methods. Some IDEs can
-present these names to the developers who use the library.
-<p>
-Finally, we're keeping the "Deprecated" attribute and the attributes for
-producing <a href="#stacktrace">useful stack traces</a>.
-<p>
-We've also added some options for for processing <a href="#native">native
-methods</a>, <a href="#enumerations">enumerations</a>, <a
-href="#serializable">serializable classes</a>, and <a
-href="#annotations">annotations</a>, which are all discussed in their
-respective examples.
-
-<h3><a name="applications">All possible applications in the input jars</a></h3>
-
-These options shrink, optimize, and obfuscate all public applications in
-<code>in.jar</code>:
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
--printseeds
-
--keepclasseswithmembers public class * {
- public static void main(java.lang.String[]);
-}
-</pre>
-<p>
-Note the use of <a
-href="usage.html#keepclasseswithmembers"><code>-keepclasseswithmembers</code></a>.
-We don't want to preserve all classes, just all classes that have main
-methods, and those methods.
-<p>
-The <a href="usage.html#printseeds"><code>-printseeds</code></a> option prints
-out which classes exactly will be preserved, so we know for sure we're getting
-what we want.
-<p>
-If applicable, you should add options for processing <a href="#native">native
-methods</a>, <a href="#callback">callback methods</a>, <a
-href="#enumerations">enumerations</a>, <a href="#serializable">serializable
-classes</a>, <a href="#beans">bean classes</a>, <a
-href="#annotations">annotations</a>, and <a href="#resourcefiles">resource
-files</a>.
-
-<h3><a name="applets">All possible applets in the input jars</a></h3>
-
-These options shrink, optimize, and obfuscate all public applets in
-<code>in.jar</code>:
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
--printseeds
-
--keep public class * extends java.applet.Applet
-</pre>
-<p>
-We're simply keeping all classes that extend the <code>Applet</code> class.
-<p>
-Again, the <a href="usage.html#printseeds"><code>-printseeds</code></a> option
-prints out which applets exactly will be preserved.
-<p>
-If applicable, you should add options for processing <a href="#native">native
-methods</a>, <a href="#callback">callback methods</a>, <a
-href="#enumerations">enumerations</a>, <a href="#serializable">serializable
-classes</a>, <a href="#beans">bean classes</a>, <a
-href="#annotations">annotations</a>, and <a href="#resourcefiles">resource
-files</a>.
-
-<h3><a name="midlets">All possible midlets in the input jars</a></h3>
-
-These options shrink, optimize, obfuscate, and preverify all public midlets in
-<code>in.jar</code>:
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars /usr/local/java/wtk2.5.2/lib/midpapi20.jar
--libraryjars /usr/local/java/wtk2.5.2/lib/cldcapi11.jar
--overloadaggressively
--repackageclasses ''
--allowaccessmodification
--microedition
--printseeds
-
--keep public class * extends javax.microedition.midlet.MIDlet
-</pre>
-<p>
-We're simply keeping all classes that extend the <code>MIDlet</code> class.
-<p>
-The <a href="usage.html#microedition"><code>-microedition</code></a> option
-makes sure the class files are preverified for Java Micro Edition, producing
-compact <code>StackMap</code> attributes. It is no longer necessary to run an
-external preverifier.
-<p>
-Be careful if you do use the external <code>preverify</code> tool on a platform
-with a case-insensitive filing system, such as Windows. Because this tool
-unpacks your processed jars, you should then use ProGuard's <a
-href="usage.html#dontusemixedcaseclassnames"><code>-dontusemixedcaseclassnames</code></a>
-option.
-<p>
-The <a href="usage.html#printseeds"><code>-printseeds</code></a> option prints
-out which midlets exactly will be preserved.
-<p>
-If applicable, you should add options for processing <a href="#native">native
-methods</a> and <a href="#resourcefiles">resource files</a>.
-<p>
-Note that you will still have to adapt the midlet jar size in the
-corresponding jad file; ProGuard doesn't do that for you.
-
-<h3><a name="jcapplets">All possible Java Card applets in the input jars</a></h3>
-
-These options shrink, optimize, and obfuscate all public Java Card applets in
-<code>in.jar</code>:
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars /usr/local/java/javacard2.2.2/lib/api.jar
--dontwarn java.lang.Class
--overloadaggressively
--repackageclasses ''
--allowaccessmodification
--printseeds
-
--keep public class * implements javacard.framework.Applet
-</pre>
-<p>
-We're simply keeping all classes that implement the <code>Applet</code>
-interface.
-<p>
-The <a href="usage.html#printseeds"><code>-printseeds</code></a> option prints
-out which applets exactly will be preserved.
-
-<h3><a name="xlets">All possible xlets in the input jars</a></h3>
-
-These options shrink, optimize, and obfuscate all public xlets in
-<code>in.jar</code>:
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars /usr/local/java/jtv1.1/javatv.jar
--libraryjars /usr/local/java/cdc1.1/lib/cdc.jar
--libraryjars /usr/local/java/cdc1.1/lib/btclasses.zip
--overloadaggressively
--repackageclasses ''
--allowaccessmodification
--printseeds
-
--keep public class * implements javax.tv.xlet.Xlet
-</pre>
-<p>
-We're simply keeping all classes that implement the <code>Xlet</code> interface.
-<p>
-The <a href="usage.html#printseeds"><code>-printseeds</code></a> option prints
-out which xlets exactly will be preserved.
-
-<h3><a name="servlets">All possible servlets in the input jars</a></h3>
-
-These options shrink, optimize, and obfuscate all public servlets in
-<code>in.jar</code>:
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
--libraryjars /usr/local/java/servlet/servlet.jar
--printseeds
-
--keep public class * implements javax.servlet.Servlet
-</pre>
-<p>
-Keeping all servlets is very similar to keeping all applets. The servlet API
-is not part of the standard run-time jar, so we're specifying it as a library.
-Don't forget to use the right path name.
-<p>
-We're then keeping all classes that implement the <code>Servlet</code>
-interface. We're using the <code>implements</code> keyword because it looks
-more familiar in this context, but it is equivalent to <code>extends</code>,
-as far as ProGuard is concerned.
-<p>
-The <a href="usage.html#printseeds"><code>-printseeds</code></a> option prints
-out which servlets exactly will be preserved.
-<p>
-If applicable, you should add options for processing <a href="#native">native
-methods</a>, <a href="#callback">callback methods</a>, <a
-href="#enumerations">enumerations</a>, <a href="#serializable">serializable
-classes</a>, <a href="#beans">bean classes</a>, <a
-href="#annotations">annotations</a>, and <a href="#resourcefiles">resource
-files</a>.
-
-<h3><a name="scala">Scala applications with the Scala runtime</a></h3>
-
-These options shrink, optimize, and obfuscate all public Scala applications in
-<code>in.jar</code>:
-<pre>
--injars in.jar
--injars /usr/local/java/scala-2.9.1/lib/scala-library.jar
--outjars out.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
-
--dontwarn scala.**
-
--keepclasseswithmembers public class * {
- public static void main(java.lang.String[]);
-}
-
--keep class * implements org.xml.sax.EntityResolver
-
--keepclassmembers class * {
- ** MODULE$;
-}
-
--keepclassmembernames class scala.concurrent.forkjoin.ForkJoinPool {
- long eventCount;
- int workerCounts;
- int runControl;
- scala.concurrent.forkjoin.ForkJoinPool$WaitQueueNode syncStack;
- scala.concurrent.forkjoin.ForkJoinPool$WaitQueueNode spareStack;
-}
-
--keepclassmembernames class scala.concurrent.forkjoin.ForkJoinWorkerThread {
- int base;
- int sp;
- int runState;
-}
-
--keepclassmembernames class scala.concurrent.forkjoin.ForkJoinTask {
- int status;
-}
-
--keepclassmembernames class scala.concurrent.forkjoin.LinkedTransferQueue {
- scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference head;
- scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference tail;
- scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference cleanMe;
-}
-</pre>
-<p>
-The configuration is essentially the same as
-for <a href="#applications">processing applications</a>, because Scala is
-compiled to ordinary Java bytecode. However, the example processes the Scala
-runtime library as well. The processed jar can be an order of magnitude
-smaller and a few times faster than the original code (for the Scala code
-examples, for instance).
-<p>
-The <a href="usage.html#dontwarn"><code>-dontwarn</code></a> option tells
-ProGuard not to complain about some artefacts in the Scala runtime, the way it
-is compiled by the <code>scalac</code> compiler (at least in Scala 2.9.1 and
-older). Note that this option should always be used with care.
-<p>
-The additional <a href="usage.html#keepoverview"><code>-keep</code></a>
-options make sure that some classes and some fields that are accessed by means
-of introspection are not removed or renamed.
-<p>
-If applicable, you should add options for processing <a href="#native">native
-methods</a>, <a href="#callback">callback methods</a>, <a
-href="#enumerations">enumerations</a>, <a href="#serializable">serializable
-classes</a>, <a href="#beans">bean classes</a>, <a
-href="#annotations">annotations</a>, and <a href="#resourcefiles">resource
-files</a>.
-<h3><a name="native">Processing native methods</a></h3>
-
-If your application, applet, servlet, library, etc., contains native methods,
-you'll want to preserve their names and their classes' names, so they can
-still be linked to the native library. The following additional option will
-ensure that:
-<pre>
--keepclasseswithmembernames,includedescriptorclasses class * {
- native &lt;methods&gt;;
-}
-</pre>
-<p>
-Note the use of
-<a href="usage.html#keepclasseswithmembernames"><code>-keepclasseswithmembernames</code></a>.
-We don't want to preserve all classes or all native methods; we just want to
-keep the relevant names from being obfuscated. The modifier
-<a href="usage.html#includedescriptorclasses">includedescriptorclasses</a>
-additionally makes sure that the return types and parameter types aren't
-renamed either, so the entire signatures remain compatible with the native
-libraries.
-<p>
-ProGuard doesn't look at your native code, so it won't automatically preserve
-the classes or class members that are invoked by the native code. These are
-entry points, which you'll have to specify explicitly. <a
-href="callback">Callback methods</a> are discussed below as a typical example.
-
-<h3><a name="callback">Processing callback methods</a></h3>
-
-If your application, applet, servlet, library, etc., contains callback
-methods, which are called from external code (native code, scripts,...),
-you'll want to preserve them, and probably their classes too. They are just
-entry points to your code, much like, say, the main method of an application.
-If they aren't preserved by other <code>-keep</code> options, something like
-the following option will keep the callback class and method:
-<pre>
--keep class mypackage.MyCallbackClass {
- void myCallbackMethod(java.lang.String);
-}
-</pre>
-<p>
-This will preserve the given class and method from being removed or renamed.
-
-<h3><a name="enumerations">Processing enumeration classes</a></h3>
-
-If your application, applet, servlet, library, etc., contains enumeration
-classes, you'll have to preserve some special methods. Enumerations were
-introduced in Java 5. The java compiler translates enumerations into classes
-with a special structure. Notably, the classes contain implementations of some
-static methods that the run-time environment accesses by introspection (Isn't
-that just grand? Introspection is the self-modifying code of a new
-generation). You have to specify these explicitly, to make sure they aren't
-removed or obfuscated:
-<pre>
--keepclassmembers,allowoptimization enum * {
- public static **[] values();
- public static ** valueOf(java.lang.String);
-}
-</pre>
-
-<h3><a name="serializable">Processing serializable classes</a></h3>
-
-More complex applications, applets, servlets, libraries, etc., may contain
-classes that are serialized. Depending on the way in which they are used, they
-may require special attention:
-<ul>
-
-<li>Often, serialization is simply a means of transporting data, without
- long-term storage. Classes that are shrunk and obfuscated should then
- continue to function fine with the following additional options:
-
-<pre>
--keepclassmembers class * implements java.io.Serializable {
- private static final java.io.ObjectStreamField[] serialPersistentFields;
- private void writeObject(java.io.ObjectOutputStream);
- private void readObject(java.io.ObjectInputStream);
- java.lang.Object writeReplace();
- java.lang.Object readResolve();
-}
-</pre>
-<p>
-
- The <a
- href="usage.html#keepclassmembers"><code>-keepclassmembers</code></a>
- option makes sure that any serialization methods are kept. By using this
- option instead of the basic <code>-keep</code> option, we're not
- forcing preservation of <i>all</i> serializable classes, just preservation
- of the listed members of classes that are actually used.</li>
-
-<li>Sometimes, the serialized data are stored, and read back later into newer
- versions of the serializable classes. One then has to take care the classes
- remain compatible with their unprocessed versions and with future
- processed versions. In such cases, the relevant classes will most likely
- have <code>serialVersionUID</code> fields. The following options should
- then be sufficient to ensure compatibility over time:
-
-<pre>
--keepnames class * implements java.io.Serializable
-
--keepclassmembers class * implements java.io.Serializable {
- static final long serialVersionUID;
- private static final java.io.ObjectStreamField[] serialPersistentFields;
- !static !transient &lt;fields&gt;;
- private void writeObject(java.io.ObjectOutputStream);
- private void readObject(java.io.ObjectInputStream);
- java.lang.Object writeReplace();
- java.lang.Object readResolve();
-}
-</pre>
-<p>
-
- The <code>serialVersionUID</code> and <code>serialPersistentFields</code>
- lines makes sure those fields are preserved, if they are present.
- The <code>&lt;fields&gt;</code> line preserves all non-static,
- non-transient fields, with their original names. The introspection of the
- serialization process and the de-serialization process will then find
- consistent names.</li>
-
-<li>Occasionally, the serialized data have to remain compatible, but the
- classes involved lack <code>serialVersionUID</code> fields. I imagine the
- original code will then be hard to maintain, since the serial version UID
- is then computed from a list of features the serializable class. Changing
- the class ever so slightly may change the computed serial version UID. The
- list of features is specified in the section on <a
- href="http://docs.oracle.com/javase/8/docs/platform/serialization/spec/class.html#a4100">Stream
- Unique Identifiers</a> of Sun's <a
- href="http://docs.oracle.com/javase/8/docs/platform/serialization/spec/serialTOC.html">Java
- Object Serialization Specification</a>. The following directives should at
- least partially ensure compatibility with the original classes:
-
-<pre>
--keepnames class * implements java.io.Serializable
-
--keepclassmembers class * implements java.io.Serializable {
- static final long serialVersionUID;
- private static final java.io.ObjectStreamField[] serialPersistentFields;
- !static !transient &lt;fields&gt;;
- !private &lt;fields&gt;;
- !private &lt;methods&gt;;
- private void writeObject(java.io.ObjectOutputStream);
- private void readObject(java.io.ObjectInputStream);
- java.lang.Object writeReplace();
- java.lang.Object readResolve();
-}
-</pre>
-<p>
-
- The new options force preservation of the elements involved in the UID
- computation. In addition, the user will have to manually specify all
- interfaces of the serializable classes (using something like "<code>-keep
- interface MyInterface</code>"), since these names are also used when
- computing the UID. A fast but sub-optimal alternative would be simply
- keeping all interfaces with "<code>-keep interface *</code>".</li>
-
-<li>In the rare event that you are serializing lambda expressions in Java 8 or
- higher, you need to preserve some methods and adapt the hard-coded names
- of the classes in which they occur:
-
-<pre>
--keepclassmembers class * {
- private static synthetic java.lang.Object $deserializeLambda$(java.lang.invoke.SerializedLambda);
-}
-
--keepclassmembernames class * {
- private static synthetic *** lambda$*(...);
-}
-
--adaptclassstrings com.example.Test
-</pre>
-<p>
-
- This should satisfy the reflection in the deserialization code of the
- Java run-time.
-
-</ul>
-<p>
-
-Note that the above options may preserve more classes and class members
-than strictly necessary. For instance, a large number of classes may implement
-the <code>Serialization</code> interface, yet only a small number may actually
-ever be serialized. Knowing your application and tuning the configuration
-often produces more compact results.
-
-<h3><a name="beans">Processing bean classes</a></h3>
-
-If your application, applet, servlet, library, etc., makes extensive use of
-introspection on bean classes to find bean editor classes, or getter and
-setter methods, then configuration may become painful. There's not much else
-you can do than making sure the bean class names, or the getter and setter
-names don't change. For instance:
-<pre>
--keep public class mypackage.MyBean {
- public void setMyProperty(int);
- public int getMyProperty();
-}
-
--keep public class mypackage.MyBeanEditor
-</pre>
-<p>
-If there are too many elements to list explicitly, wildcards in class names
-and method signatures might be helpful. This example preserves all possible
-setters and getters in classes in the package <code>mybeans</code>:
-<pre>
--keep class mybeans.** {
- void set*(***);
- void set*(int, ***);
-
- boolean is*();
- boolean is*(int);
-
- *** get*();
- *** get*(int);
-}
-</pre>
-<p>
-The '<code>***</code>' wildcard matches any type (primitive or non-primitive,
-array or non-array). The methods with the '<code>int</code>' arguments matches
-properties that are lists.
-
-<h3><a name="annotations">Processing annotations</a></h3>
-
-If your application, applet, servlet, library, etc., uses annotations, you may
-want to preserve them in the processed output. Annotations are represented by
-attributes that have no direct effect on the execution of the code. However,
-their values can be retrieved through introspection, allowing developers to
-adapt the execution behavior accordingly. By default, ProGuard treats
-annotation attributes as optional, and removes them in the obfuscation step.
-If they are required, you'll have to specify this explicitly:
-<pre>
--keepattributes *Annotation*
-</pre>
-<p>
-For brevity, we're specifying a wildcarded attribute name, which will match
-<code>RuntimeVisibleAnnotations</code>,
-<code>RuntimeInvisibleAnnotations</code>,
-<code>RuntimeVisibleParameterAnnotations</code>,
-<code>RuntimeInvisibleParameterAnnotations</code>, and
-<code>AnnotationDefault</code>. Depending on the purpose of the processed
-code, you could refine this selection, for instance not keeping the run-time
-invisible annotations (which are only used at compile-time).
-<p>
-Some code may make further use of introspection to figure out the enclosing
-methods of anonymous inner classes. In that case, the corresponding attribute
-has to be preserved as well:
-<pre>
--keepattributes EnclosingMethod
-</pre>
-
-<h3><a name="database">Processing database drivers</a></h3>
-
-Database drivers are implementations of the <code>Driver</code> interface.
-Since they are often created dynamically, you may want to preserve any
-implementations that you are processing as entry points:
-<pre>
--keep class * implements java.sql.Driver
-</pre>
-<p>
-This option also gets rid of the note that ProGuard prints out about
-<code>(java.sql.Driver)Class.forName</code> constructs, if you are
-instantiating a driver in your code (without necessarily implementing any
-drivers yourself).
-
-<h3><a name="componentui">Processing ComponentUI classes</a></h3>
-
-Swing UI look and feels are implemented as extensions of the
-<code>ComponentUI</code> class. For some reason, these have to contain a
-static method <code>createUI</code>, which the Swing API invokes using
-introspection. You should therefore always preserve the method as an entry
-point, for instance like this:
-<pre>
--keep class * extends javax.swing.plaf.ComponentUI {
- public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
-}
-</pre>
-<p>
-This option also keeps the classes themselves.
-
-<h3><a name="rmi">Processing RMI code</a></h3>
-
-Reportedly, the easiest way to handle RMI code is to process the code with
-ProGuard first and then invoke the <code>rmic</code> tool. If that is not
-possible, you may want to try something like this:
-<pre>
--keepattributes Exceptions
-
--keep interface * extends java.rmi.Remote {
- &lt;methods&gt;;
-}
-
--keep class * implements java.rmi.Remote {
- &lt;init&gt;(java.rmi.activation.ActivationID, java.rmi.MarshalledObject);
-}
-</pre>
-<p>
-The first <code>-keep</code> option keeps all your Remote interfaces and their
-methods. The second one keeps all the implementations, along with their
-particular RMI constructors, if any.
-<p>
-The <code>Exceptions</code> attribute has to be kept too, because the RMI
-handling code performs introspection to check whether the method signatures
-are compatible.
-
-<h3><a name="injection">Processing resource injection</a></h3>
-
-If your application is using JEE-style resource injection, the application
-container will automatically assign instances of resource classes to fields and
-methods that are annotated with <code>@Resource</code>. The container applies
-introspection, even accessing private class members directly. It typically
-constructs a resource name based on the type name and the class member name.
-We then have to avoid that such class members are removed or renamed:
-<pre>
--keepclassmembers class * {
- @javax.annotation.Resource *;
-}
-</pre>
-<p>
-The Spring framework has another similar annotation <code>@Autowired</code>:
-<pre>
--keepclassmembers class * {
- @org.springframework.beans.factory.annotation.Autowired *;
-}
-</pre>
-
-<h3><a name="resourcefiles">Processing resource files</a></h3>
-
-If your application, applet, servlet, library, etc., contains resource files,
-it may be necessary to adapt their names and/or their contents when the
-application is obfuscated. The following two options can achieve this
-automatically:
-<pre>
--adaptresourcefilenames **.properties,**.gif,**.jpg
--adaptresourcefilecontents **.properties,META-INF/MANIFEST.MF
-</pre>
-<p>
-The <a href="usage.html#adaptresourcefilenames">-adaptresourcefilenames</a>
-option in this case renames properties files and image files in the processed
-output, based on the obfuscated names of their corresponding class files (if
-any). The <a
-href="usage.html#adaptresourcefilecontents">-adaptresourcefilecontents</a>
-option looks for class names in properties files and in the manifest file, and
-replaces these names by the obfuscated names (if any). You'll probably want to
-adapt the filters to suit your application.
-
-<h3><a name="manifestfiles">Processing manifest files</a></h3>
-
-As illustrated in the previous section, manifest files can be treated like
-ordinary resource files. ProGuard can adapt obfuscated class names in the
-files, but it won't make any other changes. If you want anything else, you
-should apply an external tool. For instance, if a manifest file contains
-signing information, you should sign the jar again after it has been
-processed.
-<p>
-If you're merging several input jars into a single output jar, you'll have to
-pick one, typically by specifying <a href="usage.html#filters">filters</a>:
-<pre>
--injars in1.jar
--injars in2.jar(!META-INF/MANIFEST.MF)
--injars in3.jar(!META-INF/MANIFEST.MF)
--outjars out.jar
-</pre>
-<p>
-The filters will let ProGuard copy the manifest file from the first jar and
-ignore any manifest files in the second and third input jars. Note that
-ProGuard will leave the order of the files in the jars unchanged; manifest
-files are not necessarily put first.
-
-<h3><a name="stacktrace">Producing useful obfuscated stack traces</a></h3>
-
-These options let obfuscated applications or libraries produce stack traces
-that can still be deciphered later on:
-<pre>
--printmapping out.map
-
--renamesourcefileattribute SourceFile
--keepattributes SourceFile,LineNumberTable
-</pre>
-<p>
-We're keeping all source file attributes, but we're replacing their values by
-the string "SourceFile". We could use any string. This string is already
-present in all class files, so it doesn't take up any extra space. If you're
-working with J++, you'll want to keep the "SourceDir" attribute as well.
-<p>
-We're also keeping the line number tables of all methods.
-<p>
-Whenever both of these attributes are present, the Java run-time environment
-will include line number information when printing out exception stack traces.
-<p>
-The information will only be useful if we can map the obfuscated names back to
-their original names, so we're saving the mapping to a file
-<code>out.map</code>. The information can then be used by the <a
-href="retrace/index.html">ReTrace</a> tool to restore the original stack trace.
-
-<h3><a name="repackaging">Obfuscating package names</a></h3>
-
-Package names can be obfuscated in various ways, with increasing levels of
-obfuscation and compactness. For example, consider the following classes:
-<pre>
-mycompany.myapplication.MyMain
-mycompany.myapplication.Foo
-mycompany.myapplication.Bar
-mycompany.myapplication.extra.FirstExtra
-mycompany.myapplication.extra.SecondExtra
-mycompany.util.FirstUtil
-mycompany.util.SecondUtil
-</pre>
-<p>
-Let's assume the class name <code>mycompany.myapplication.MyMain</code> is the
-main application class that is kept by the configuration. All other class names
-can be obfuscated.
-<p>
-By default, packages that contain classes that can't be renamed aren't renamed
-either, and the package hierarchy is preserved. This results in obfuscated
-class names like these:
-<pre>
-mycompany.myapplication.MyMain
-mycompany.myapplication.a
-mycompany.myapplication.b
-mycompany.myapplication.a.a
-mycompany.myapplication.a.b
-mycompany.a.a
-mycompany.a.b
-</pre>
-<p>
-The <a
-href="usage.html#flattenpackagehierarchy"><code>-flattenpackagehierarchy</code></a>
-option obfuscates the package names further, by flattening the package
-hierarchy of obfuscated packages:
-<pre>
--flattenpackagehierarchy 'myobfuscated'
-</pre>
-<p>
-The obfuscated class names then look as follows:
-<pre>
-mycompany.myapplication.MyMain
-mycompany.myapplication.a
-mycompany.myapplication.b
-myobfuscated.a.a
-myobfuscated.a.b
-myobfuscated.b.a
-myobfuscated.b.b
-</pre>
-<p>
-Alternatively, the <a
-href="usage.html#repackageclasses"><code>-repackageclasses</code></a> option
-obfuscates the entire packaging, by combining obfuscated classes into a single
-package:
-<pre>
--repackageclasses 'myobfuscated'
-</pre>
-The obfuscated class names then look as follows:
-<pre>
-mycompany.myapplication.MyMain
-mycompany.myapplication.a
-mycompany.myapplication.b
-myobfuscated.a
-myobfuscated.b
-myobfuscated.c
-myobfuscated.d
-</pre>
-<p>
-Additionally specifying the <a
-href="usage.html#allowaccessmodification"><code>-allowaccessmodification</code></a>
-option allows access permissions of classes and class members to
-be broadened, opening up the opportunity to repackage all obfuscated classes:
-<pre>
--repackageclasses 'myobfuscated'
--allowaccessmodification
-</pre>
-The obfuscated class names then look as follows:
-<pre>
-mycompany.myapplication.MyMain
-myobfuscated.a
-myobfuscated.b
-myobfuscated.c
-myobfuscated.d
-myobfuscated.e
-myobfuscated.f
-</pre>
-<p>
-The specified target package can always be the root package. For instance:
-<pre>
--repackageclasses ''
--allowaccessmodification
-</pre>
-The obfuscated class names are then the shortest possible names:
-<pre>
-mycompany.myapplication.MyMain
-a
-b
-c
-d
-e
-f
-</pre>
-<p>
-Note that not all levels of obfuscation of package names may be acceptable for
-all code. Notably, you may have to take into account that your application may
-contain <a href="#resourcefiles">resource files</a> that have to be adapted.
-
-<h3><a name="logging">Removing logging code</a></h3>
-
-You can let ProGuard remove logging code. The trick is to specify that the
-logging methods don't have side-effects &mdash; even though they actually do,
-since they write to the console or to a log file. ProGuard will take your word
-for it and remove the invocations (in the optimization step) and if possible
-the logging classes and methods themselves (in the shrinking step).
-<p>
-For example, this configuration removes invocations of the Android logging
-methods:
-<pre>
--assumenosideeffects class android.util.Log {
- public static boolean isLoggable(java.lang.String, int);
- public static int v(...);
- public static int i(...);
- public static int w(...);
- public static int d(...);
- public static int e(...);
-}
-</pre>
-<p>
-The wildcards are a shortcut to match all versions of the methods.
-<p>
-Note that you generally can't remove logging code that uses
-<code>System.out.println</code>, since you would be removing all invocations
-of <code>java.io.PrintStream#println</code>, which could break your
-application. You can work around it by creating your own logging methods and
-let ProGuard remove those.
-
-<h3><a name="restructuring">Restructuring the output archives</a></h3>
-
-In simple applications, all output classes and resources files are merged into
-a single jar. For example:
-<pre>
--injars classes
--injars in1.jar
--injars in2.jar
--injars in3.jar
--outjars out.jar
-</pre>
-<p>
-This configuration merges the processed versions of the files in the
-<code>classes</code> directory and the three jars into a single output jar
-<code>out.jar</code>.
-<p>
-If you want to preserve the structure of your input jars (and/or wars, ears,
-zips, or directories), you can specify an output directory (or a war, an ear,
-or a zip). For example:
-<pre>
--injars in1.jar
--injars in2.jar
--injars in3.jar
--outjars out
-</pre>
-<p>
-The input jars will then be reconstructed in the directory <code>out</code>,
-with their original names.
-<p>
-You can also combine archives into higher level archives. For example:
-<pre>
--injars in1.jar
--injars in2.jar
--injars in3.jar
--outjars out.war
-</pre>
-<p>
-The other way around, you can flatten the archives inside higher level
-archives into simple archives:
-<pre>
--injars in.war
--outjars out.jar
-</pre>
-<p>
-This configuration puts the processed contents of all jars inside
-<code>in.war</code> (plus any other contents of <code>in.war</code>) into
-<code>out.jar</code>.
-<p>
-If you want to combine input jars (and/or wars, ears, zips, or directories)
-into output jars (and/or wars, ears, zips, or directories), you can group the
-<a href="usage.html#injars"><code>-injars</code></a> and <a
-href="usage.html#outjars"><code>-outjars</code></a> options. For example:
-<pre>
--injars base_in1.jar
--injars base_in2.jar
--injars base_in3.jar
--outjars base_out.jar
-
--injars extra_in.jar
--outjars extra_out.jar
-</pre>
-<p>
-This configuration puts the processed results of all <code>base_in*.jar</code>
-jars into <code>base_out.jar</code>, and the processed results of the
-<code>extra_in.jar</code> into <code>extra_out.jar</code>. Note that only the
-order of the options matters; the additional whitespace is just for clarity.
-<p>
-This grouping, archiving, and flattening can be arbitrarily complex. ProGuard
-always tries to package output archives in a sensible way, reconstructing the
-input entries as much as required.
-
-<h3><a name="filtering">Filtering the input and the output</a></h3>
-
-If you want even greater control, you can add
-<a href="usage.html#filters">filters</a> to the input and the output,
-filtering out zips, ears, wars, jars, and/or ordinary files. For example, if
-you want to disregard certain files from an input jar:
-<pre>
--injars in.jar(!images/**)
--outjars out.jar
-</pre>
-<p>
-This configuration removes any files in the <code>images</code> directory and
-its subdirectories.
-<p>
-Such filters can be convenient for avoiding warnings about duplicate files in
-the output. For example, only keeping the manifest file from a first input jar:
-<pre>
--injars in1.jar
--injars in2.jar(!META-INF/MANIFEST.MF)
--injars in3.jar(!META-INF/MANIFEST.MF)
--outjars out.jar
-</pre>
-<p>
-Another useful application is speeding up the processing by ProGuard, by
-disregarding a large number of irrelevant classes in the runtime library jar:
-<pre>
--libraryjars &lt;java.home&gt;/lib/rt.jar(java/**,javax/**)
-</pre>
-<p>
-The filter makes ProGuard disregard <code>com.sun.**</code> classes, for
-instance , which don't affect the processing of ordinary applications.
-<p>
-It is also possible to filter the jars (and/or wars, ears, zips) themselves,
-based on their names. For example:
-<pre>
--injars in(**/acme_*.jar;)
--outjars out.jar
-</pre>
-<p>
-Note the semi-colon in the filter; the filter in front of it applies to jar
-names. In this case, only <code>acme_*.jar</code> jars are read from the
-directory <code>in</code> and its subdirectories. Filters for war names, ear
-names, and zip names can be prefixed with additional semi-colons. All types of
-filters can be combined. They are orthogonal.
-<p>
-On the other hand, you can also filter the output, in order to control what
-content goes where. For example:
-<pre>
--injars in.jar
--outjars code_out.jar(**.class)
--outjars resources_out.jar
-</pre>
-<p>
-This configuration splits the processed output, sending <code>**.class</code>
-files to <code>code_out.jar</code>, and all remaining files to
-<code>resources_out.jar</code>.
-<p>
-Again, the filtering can be arbitrarily complex, especially when combined with
-grouping input and output.
-
-<h3><a name="multiple">Processing multiple applications at once</a></h3>
-
-You can process several dependent or independent applications (or applets,
-midlets,...) in one go, in order to save time and effort. ProGuard's input and
-output handling offers various ways to keep the output nicely structured.
-<p>
-The easiest way is to specify your input jars (and/or wars, ears, zips, and
-directories) and a single output directory. ProGuard will then reconstruct the
-input in this directory, using the original jar names. For example, showing
-just the input and output options:
-<pre>
--injars application1.jar
--injars application2.jar
--injars application3.jar
--outjars processed_applications
-</pre>
-<p>
-After processing, the directory <code>processed_applications</code> will
-contain processed versions of application jars, with their original names.
-
-<h3><a name="incremental">Incremental obfuscation</a></h3>
-
-After having <a href="#application">processed an application</a>, e.g.
-ProGuard itself, you can still incrementally add other pieces of code that
-depend on it, e.g. the ProGuard GUI:
-<pre>
--injars proguardgui.jar
--outjars proguardgui_out.jar
--injars proguard.jar
--outjars proguard_out.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
--applymapping proguard.map
-
--keep public class proguard.gui.ProGuardGUI {
- public static void main(java.lang.String[]);
-}
-</pre>
-<p>
-We're reading both unprocessed jars as input. Their processed contents will go
-to the respective output jars. The <a
-href="usage.html#applymapping"><code>-applymapping</code></a> option then
-makes sure the ProGuard part of the code gets the previously produced
-obfuscation mapping. The final application will consist of the obfuscated
-ProGuard jar and the additional obfuscated GUI jar.
-<p>
-The added code in this example is straightforward; it doesn't affect the
-original code. The <code>proguard_out.jar</code> will be identical to the one
-produced in the initial processing step. If you foresee adding more complex
-extensions to your code, you should specify the options <a
-href="usage.html#useuniqueclassmembernames"><code>-useuniqueclassmembernames</code></a>,
-<a href="usage.html#dontshrink"><code>-dontshrink</code></a>, and <a
-href="usage.html#dontoptimize"><code>-dontoptimize</code></a> <i>in the
-original processing step</i>. These options ensure that the obfuscated base
-jar will always remain usable without changes. You can then specify the base
-jar as a library jar:
-<pre>
--injars proguardgui.jar
--outjars proguardgui_out.jar
--libraryjars proguard.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
--applymapping proguard.map
-
--keep public class proguard.gui.ProGuardGUI {
- public static void main(java.lang.String[]);
-}
-</pre>
-
-<h3><a name="microedition">Preverifying class files for Java Micro Edition</a></h3>
-
-Even if you're not interested in shrinking, optimizing, and obfuscating your
-midlets, as shown in the <a href="#midlets">midlets example</a>, you can still
-use ProGuard to preverify the class files for Java Micro Edition. ProGuard
-produces slightly more compact results than the traditional external
-preverifier.
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars /usr/local/java/wtk2.5.2/lib/midpapi20.jar
--libraryjars /usr/local/java/wtk2.5.2/lib/cldcapi11.jar
-
--dontshrink
--dontoptimize
--dontobfuscate
-
--microedition
-</pre>
-<p>
-We're not processing the input, just making sure the class files are
-preverified by targeting them at Java Micro Edition with the <a
-href="usage.html#microedition"><code>-microedition</code></a> option. Note
-that we don't need any <code>-keep</code> options to specify entry points; all
-class files are simply preverified.
-
-<h3><a name="upgrade">Upgrading class files to Java 6</a></h3>
-
-The following options upgrade class files to Java 6, by updating their
-internal version numbers and preverifying them. The class files can then be
-loaded more efficiently by the Java 6 Virtual Machine.
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
-
--dontshrink
--dontoptimize
--dontobfuscate
-
--target 1.6
-</pre>
-<p>
-We're not processing the input, just retargeting the class files with the <a
-href="usage.html#target"><code>-target</code></a> option. They will
-automatically be preverified for Java 6 as a result. Note that we don't need
-any <code>-keep</code> options to specify entry points; all class files are
-simply updated and preverified.
-
-<h3><a name="deadcode">Finding dead code</a></h3>
-
-These options list unused classes, fields, and methods in the application
-<code>mypackage.MyApplication</code>:
-<pre>
--injars in.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
-
--dontoptimize
--dontobfuscate
--dontpreverify
--printusage
-
--keep public class mypackage.MyApplication {
- public static void main(java.lang.String[]);
-}
-</pre>
-<p>
-We're not specifying an output jar, just printing out some results. We're
-saving some processing time by skipping the other processing steps.
-<p>
-The java compiler inlines primitive constants and String constants
-(<code>static final</code> fields). ProGuard would therefore list such fields
-as not being used in the class files that it analyzes, even if they <i>are</i>
-used in the source files. We can add a <a
-href="usage.html#keepclassmembers"><code>-keepclassmembers</code></a> option
-that keeps those fields a priori, in order to avoid having them listed:
-<pre>
--keepclassmembers class * {
- static final % *;
- static final java.lang.String *;
-}
-</pre>
-
-<h3><a name="structure">Printing out the internal structure of class files</a></h3>
-
-These options print out the internal structure of all class files in the input
-jar:
-<pre>
--injars in.jar
-
--dontshrink
--dontoptimize
--dontobfuscate
--dontpreverify
-
--dump
-</pre>
-<p>
-Note how we don't need to specify the Java run-time jar, because we're not
-processing the input jar at all.
-
-<h3><a name="annotated">Using annotations to configure ProGuard</a></h3>
-
-The traditional ProGuard configuration allows to keep a clean separation
-between the code and the configuration for shrinking, optimization, and
-obfuscation. However, it is also possible to define specific annotations,
-and then annotate the code to configure the processing.
-<p>
-You can find a set of such predefined annotations in the directory
-<code>examples/annotations/lib</code> in the ProGuard distribution.
-The annotation classes are defined in <code>annotations.jar</code>. The
-corresponding ProGuard configuration (or meta-configuration, if you prefer)
-is specified in <code>annotations.pro</code>. With these files, you can start
-annotating your code. For instance, a java source file
-<code>Application.java</code> can be annotated as follows:
-<pre>
-@KeepApplication
-public class Application {
- ....
-}
-</pre>
-<p>
-The ProGuard configuration file for the application can then be simplified by
-leveraging off these annotations:
-<pre>
--injars in.jar
--outjars out.jar
--libraryjars &lt;java.home&gt;/lib/rt.jar
-
--include lib/annotations.pro
-</pre>
-<p>
-The annotations are effectively replacing the application-dependent
-<code>-keep</code> options. You may still wish to add traditional
-<code>-keep</code> options for processing <a href="#native">native
-methods</a>, <a href="#enumerations">enumerations</a>, <a
-href="#serializable">serializable classes</a>, and <a
-href="#annotations">annotations</a>.
-<p>
-The directory <code>examples/annotations</code> contains more examples that
-illustrate some of the possibilities.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/gradle.html b/docs/manual/gradle.html
deleted file mode 100644
index 35ab845..0000000
--- a/docs/manual/gradle.html
+++ /dev/null
@@ -1,561 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>Gradle Task</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/gradle.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/gradle.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Gradle Task</h2>
-
-<b>ProGuard</b> can be run as a task in the Java-based build tool Gradle
-(version 2.1 or higher).
-<p>
-
-Before you can use the <code>proguard</code> task, you have to make sure
-Gradle can find it in its class path at build time. One way is to add the
-following line to your <code>build.gradle</code> file:
-<p>
-
-<pre>
-buildscript {
- repositories {
- flatDir dirs: '/usr/local/java/proguard/lib'
- }
- dependencies {
- classpath ':proguard:'
- }
-}
-</pre>
-<p>
-
-Please make sure the class path is set correctly for your system.
-<p>
-
-You can then define a task:
-<p>
-<pre>
-task myProguardTask(type: proguard.gradle.ProGuardTask) {
- .....
-}
-</pre>
-<p>
-
-The embedded configuration is much like a standard ProGuard configuration.
-Notable similarities and differences:
-<ul>
-<li>Like in ProGuard-style configurations, we're using all lower-case names
- for the settings.</li>
-<li>The options don't have a dash as prefix.</li>
-<li>Arguments typically have quotes.</li>
-<li>Some settings are specified as named arguments.</li>
-</ul>
-<p>
-You can find some sample build files in the <code>examples/gradle</code>
-directory of the ProGuard distribution.
-<p>
-If you prefer a more verbose configuration derived from the Ant task, you can
-import the Ant task as a <a href="#anttask">Gradle task</a>.
-
-<h2><a name="proguard">Settings</a></h2>
-
-The ProGuard task supports the following settings in its closure:
-
-<dl>
-
-<dt><a name="configuration_attribute"><code><b>configuration</b></code></a>
- <a href="#file"><i>files</i></a></dt>
-<dd>Read and merge options from the given ProGuard-style configuration
- files. The files are resolved and parsed lazily, during the execution
- phase.</dd>
-
-<dt><a href="usage.html#injars"><code><b>injars</b></code></a>
- <a href="#classpath"><i>class_path</i></a></dt>
-<dd>Specifies the program jars (or aars, wars, ears, zips, apks, or
- directories). The files are resolved and read lazily, during the execution
- phase.</dd>
-
-<dt><a href="usage.html#outjars"><code><b>outjars</b></code></a>
- <a href="#classpath"><i>class_path</i></a></dt>
-<dd>Specifies the names of the output jars (or aars, wars, ears, zips, apks, or
- directories). The files are resolved and written lazily, during the
- execution phase.</dd>
-
-<dt><a href="usage.html#libraryjars"><code><b>libraryjars</b></code></a>
- <a href="#classpath"><i>class_path</i></a></dt>
-<dd>Specifies the library jars (or aars, wars, ears, zips, apks, or
- directories). The files are resolved and read lazily, during the execution
- phase.</dd>
-
-<dt><a href="usage.html#skipnonpubliclibraryclasses"><code><b>skipnonpubliclibraryclasses</b></code></a></dt>
-<dd>Ignore non-public library classes.</dd>
-
-<dt><a href="usage.html#dontskipnonpubliclibraryclassmembers"><code><b>dontskipnonpubliclibraryclassmembers</b></code></a></dt>
-<dd>Don't ignore package visible library class members.</dd>
-
-<dt><a href="usage.html#keepdirectories"><code><b>keepdirectories</b></code></a>
- ['<a href="usage.html#filefilters"><i>directory_filter</i></a>']</dt>
-<dd>Keep the specified directories in the output jars (or aars, wars, ears,
- zips, apks, or directories).</dd>
-
-<dt><a href="usage.html#target"><code><b>target</b></code></a>
- '<i>version</i>'</dt>
-<dd>Set the given version number in the processed classes.</dd>
-
-<dt><a href="usage.html#forceprocessing"><code><b>forceprocessing</b></code></a></dt>
-<dd>Process the input, even if the output seems up to date.</dd>
-
-<dt><a href="usage.html#keep"><code><b>keep</b></code></a>
- [<a href="#keepmodifier"><i>modifier</i>,...</a>]
- <a href="#classspecification"><i>class_specification</i></a></dt>
-<dd>Preserve the specified classes <i>and</i> class members.</dd>
-
-<dt><a href="usage.html#keepclassmembers"><code><b>keepclassmembers</b></code></a>
- [<a href="#keepmodifier"><i>modifier</i>,...</a>]
- <a href="#classspecification"><i>class_specification</i></a></dt>
-<dd>Preserve the specified class members, if their classes are preserved as
- well.</dd>
-
-<dt><a href="usage.html#keepclasseswithmembers"><code><b>keepclasseswithmembers</b></code></a>
- [<a href="#keepmodifier"><i>modifier</i>,...</a>]
- <a href="#classspecification"><i>class_specification</i></a></dt>
-<dd>Preserve the specified classes <i>and</i> class members, if all of the
- specified class members are present.</dd>
-
-<dt><a href="usage.html#keepnames"><code><b>keepnames</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a></dt>
-<dd>Preserve the names of the specified classes <i>and</i> class members (if
- they aren't removed in the shrinking step).</dd>
-
-<dt><a href="usage.html#keepclassmembernames"><code><b>keepclassmembernames</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a></dt>
-<dd>Preserve the names of the specified class members (if they aren't removed
- in the shrinking step).</dd>
-
-<dt><a href="usage.html#keepclasseswithmembernames"><code><b>keepclasseswithmembernames</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a></dt>
-<dd>Preserve the names of the specified classes <i>and</i> class members, if
- all of the specified class members are present (after the shrinking
- step).</dd>
-
-<dt><a href="usage.html#printseeds"><code><b>printseeds</b></code></a>
- [<a href="#file"><i>file</i></a>]</dt>
-<dd>List classes and class members matched by the various <code>keep</code>
- commands, to the standard output or to the given file.</dd>
-
-<dt><a href="usage.html#dontshrink"><code><b>dontshrink</b></code></a></dt>
-<dd>Don't shrink the input class files.</dd>
-
-<dt><a href="usage.html#printusage"><code><b>printusage</b></code></a>
- [<a href="#file"><i>file</i></a>]</dt>
-<dd>List dead code of the input class files, to the standard output or to the
- given file.</dd>
-
-<dt><a href="usage.html#whyareyoukeeping"><code><b>whyareyoukeeping</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a></dt>
-<dd>Print details on why the given classes and class members are being kept in
- the shrinking step.</dd>
-
-<dt><a href="usage.html#dontoptimize"><code><b>dontoptimize</b></code></a></dt>
-<dd>Don't optimize the input class files.</dd>
-
-<dt><a href="usage.html#optimizations"><code><b>optimizations</b></code></a> '<a href="optimizations.html"><i>optimization_filter</i></a>'</dt>
-<dd>Perform only the specified optimizations.</dd>
-
-<dt><a href="usage.html#optimizationpasses"><code><b>optimizationpasses</b></code></a>
- <i>n</i></dt>
-<dd>The number of optimization passes to be performed.</dd>
-
-<dt><a href="usage.html#assumenosideeffects"><code><b>assumenosideeffects</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a></dt>
-<dd>Assume that the specified methods don't have any side effects, while
- optimizing. <i>Only use this option if you know what you're
- doing!</i></dd>
-
-<dt><a href="usage.html#allowaccessmodification"><code><b>allowaccessmodification</b></code></a></dt>
-<dd>Allow the access modifiers of classes and class members to be modified,
- while optimizing.</dd>
-
-<dt><a href="usage.html#mergeinterfacesaggressively"><code><b>mergeinterfacesaggressively</b></code></a></dt>
-<dd>Allow any interfaces to be merged, while optimizing.</dd>
-
-<dt><a href="usage.html#dontobfuscate"><code><b>dontobfuscate</b></code></a></dt>
-<dd>Don't obfuscate the input class files.</dd>
-
-<dt><a href="usage.html#printmapping"><code><b>printmapping</b></code></a>
- [<a href="#file"><i>file</i></a>]</dt>
-<dd>Print the mapping from old names to new names for classes and class members
- that have been renamed, to the standard output or to the given file.</dd>
-
-<dt><a href="usage.html#applymapping"><code><b>applymapping</b></code></a>
- <a href="#file"><i>file</i></a></dt>
-<dd>Reuse the given mapping, for incremental obfuscation.</dd>
-
-<dt><a href="usage.html#obfuscationdictionary"><code><b>obfuscationdictionary</b></code></a>
- <a href="#file"><i>file</i></a></dt>
-<dd>Use the words in the given text file as obfuscated field names and method
- names.</dd>
-
-<dt><a href="usage.html#classobfuscationdictionary"><code><b>classobfuscationdictionary</b></code></a>
- <a href="#file"><i>file</i></a></dt>
-<dd>Use the words in the given text file as obfuscated class names.</dd>
-
-<dt><a href="usage.html#packageobfuscationdictionary"><code><b>packageobfuscationdictionary</b></code></a>
- <a href="#file"><i>file</i></a></dt>
-<dd>Use the words in the given text file as obfuscated package names.</dd>
-
-<dt><a href="usage.html#overloadaggressively"><code><b>overloadaggressively</b></code></a></dt>
-<dd>Apply aggressive overloading while obfuscating.</dd>
-
-<dt><a href="usage.html#useuniqueclassmembernames"><code><b>useuniqueclassmembernames</b></code></a></dt>
-<dd>Ensure uniform obfuscated class member names for subsequent incremental
- obfuscation.</dd>
-
-<dt><a href="usage.html#dontusemixedcaseclassnames"><code><b>dontusemixedcaseclassnames</b></code></a></dt>
-<dd>Don't generate mixed-case class names while obfuscating.</dd>
-
-<dt><a href="usage.html#keeppackagenames"><code><b>keeppackagenames</b></code></a> ['<a href="usage.html#filters"><i>package_filter</i></a>']</dt>
-<dd>Keep the specified package names from being obfuscated. If no name is
- given, all package names are preserved.</dd>
-
-<dt><a href="usage.html#flattenpackagehierarchy"><code><b>flattenpackagehierarchy</b></code></a>
- '<i>package_name</i>'</dt>
-<dd>Repackage all packages that are renamed into the single given parent
- package.</dd>
-
-<dt><a href="usage.html#repackageclasses"><code><b>repackageclasses</b></code></a>
- ['<i>package_name</i>']</dt>
-<dd>Repackage all class files that are renamed into the single given
- package.</dd>
-
-<dt><a href="usage.html#keepattributes"><code><b>keepattributes</b></code></a> ['<a href="usage.html#filters"><i>attribute_filter</i></a>']</dt>
-<dd>Preserve the specified optional Java bytecode attributes, with optional
- wildcards. If no name is given, all attributes are preserved.</dd>
-
-<dt><a href="usage.html#keepparameternames"><code><b>keepparameternames</b></code></a></dt>
-<dd>Keep the parameter names and types of methods that are kept.</dd>
-
-<dt><a href="usage.html#renamesourcefileattribute"><code><b>renamesourcefileattribute</b></code></a>
- ['<i>string</i>']</dt>
-<dd>Put the given constant string in the <code>SourceFile</code>
- attributes.</dd>
-
-<dt><a href="usage.html#adaptclassstrings"><code><b>adaptclassstrings</b></code></a>
- ['<a href="usage.html#filters"><i>class_filter</i></a>']</dt>
-<dd>Adapt string constants in the specified classes, based on the obfuscated
- names of any corresponding classes.</dd>
-
-<dt><a href="usage.html#adaptresourcefilenames"><code><b>adaptresourcefilenames</b></code></a>
- ['<a href="usage.html#filefilters"><i>file_filter</i></a>']</dt>
-<dd>Rename the specified resource files, based on the obfuscated names of the
- corresponding class files.</dd>
-
-<dt><a href="usage.html#adaptresourcefilecontents"><code><b>adaptresourcefilecontents</b></code></a>
- ['<a href="usage.html#filefilters"><i>file_filter</i></a>']</dt>
-<dd>Update the contents of the specified resource files, based on the
- obfuscated names of the processed classes.</dd>
-
-<dt><a href="usage.html#dontpreverify"><code><b>dontpreverify</b></code></a></dt>
-<dd>Don't preverify the processed class files if they are targeted at Java Micro
- Edition or at Java 6 or higher.</dd>
-
-<dt><a href="usage.html#microedition"><code><b>microedition</b></code></a></dt>
-<dd>Target the processed class files at Java Micro Edition.</dd>
-
-<dt><a href="usage.html#verbose"><code><b>verbose</b></code></a></dt>
-<dd>Write out some more information during processing.</dd>
-
-<dt><a href="usage.html#dontnote"><code><b>dontnote</b></code></a> '<a href="usage.html#filters"><i>class_filter</i></a>'</dt>
-<dd>Don't print notes about classes matching the specified class name
- filter.</dd>
-
-<dt><a href="usage.html#dontwarn"><code><b>dontwarn</b></code></a> '<a href="usage.html#filters"><i>class_filter</i></a>'</dt>
-<dd>Don't print warnings about classes matching the specified class name
- filter. <i>Only use this option if you know what you're doing!</i></dd>
-
-<dt><a href="usage.html#ignorewarnings"><code><b>ignorewarnings</b></code></a></dt>
-<dd>Print warnings about unresolved references, but continue processing
- anyhow. <i>Only use this option if you know what you're doing!</i></dd>
-
-<dt><a href="usage.html#printconfiguration"><code><b>printconfiguration</b></code></a>
- [<a href="#file"><i>file</i></a>]</dt>
-<dd>Write out the entire configuration in traditional ProGuard style, to the
- standard output or to the given file. Useful to replace unreadable
- XML configurations.</dd>
-
-<dt><a href="usage.html#dump"><code><b>dump</b></code></a>
- [<a href="#file"><i>file</i></a>]</dt>
-<dd>Write out the internal structure of the processed class files, to the
- standard output or to the given file.</dd>
-
-</dl>
-
-<h2><a name="classpath">Class Paths</a></h2>
-
-Class paths are specified as Gradle file collections, which means they can be
-specified as simple strings, with <code>files(Object)</code>, etc.
-<p>
-In addition, they can have ProGuard-style filters, specified as
-comma-separated named arguments after the file:
-
-<dl>
-
-<dt><code><b>filter:</b></code>
- '<a href="usage.html#filefilters"><i>file_filter</i></a>'</dt>
-<dd>An optional filter for all class file names and resource file names that
- are encountered.</dd>
-
-<dt><code><b>apkfilter:</b></code>
- '<a href="usage.html#filefilters"><i>file_filter</i></a>'</dt>
-<dd>An optional filter for all apk names that are encountered.</dd>
-
-<dt><code><b>jarfilter:</b></code>
- '<a href="usage.html#filefilters"><i>file_filter</i></a>'</dt>
-<dd>An optional filter for all jar names that are encountered.</dd>
-
-<dt><code><b>aarfilter:</b></code>
- '<a href="usage.html#filefilters"><i>file_filter</i></a>'</dt>
-<dd>An optional filter for all aar names that are encountered.</dd>
-
-<dt><code><b>warfilter:</b></code>
- '<a href="usage.html#filefilters"><i>file_filter</i></a>'</dt>
-<dd>An optional filter for all war names that are encountered.</dd>
-
-<dt><code><b>earfilter:</b></code>
- '<a href="usage.html#filefilters"><i>file_filter</i></a>'</dt>
-<dd>An optional filter for all ear names that are encountered.</dd>
-
-<dt><code><b>zipfilter:</b></code>
- '<a href="usage.html#filefilters"><i>file_filter</i></a>'</dt>
-<dd>An optional filter for all zip names that are encountered.</dd>
-
-</dl>
-
-<h2><a name="file">Files</a></h2>
-
-Files are specified as Gradle files, which means they can be specified
-as simple strings, as File instances, with <code>file(Object)</code>, etc.
-<p>
-In Gradle, file names (any strings really) in double quotes can contain
-properties or code inside <code>${...}</code>. These are automatically
-expanded.
-<p>
-For example, <code>"${System.getProperty('java.home')}/lib/rt.jar"</code> is
-expanded to something like <code>'/usr/local/java/jdk/jre/lib/rt.jar'</code>.
-Similarly, <code>System.getProperty('user.home')</code> is expanded to the
-user's home directory, and <code>System.getProperty('user.dir')</code> is
-expanded to the current working directory.
-
-<h2><a name="keepmodifier">Keep Modifiers</a></h2>
-
-The keep settings can have the following named arguments that modify their
-behaviors:
-
-<dl>
-
-<dt><a href="usage.html#includedescriptorclasses"><code><b>includedescriptorclasses:</b></code></a>
- <i>boolean</i>
- (default = false)</dt>
-<dd>Specifies whether the classes of the fields and methods specified in the
- keep tag must be kept as well.</dd>
-
-<dt><a href="usage.html#allowshrinking"><code><b>allowshrinking:</b></code></a>
- <i>boolean</i>
- (default = false)</dt>
-<dd>Specifies whether the entry points specified in the keep tag may be
- shrunk.</dd>
-
-<dt><a href="usage.html#allowoptimization"><code><b>allowoptimization:</b></code></a>
- <i>boolean</i>
- (default = false)</dt>
-<dd>Specifies whether the entry points specified in the keep tag may be
- optimized.</dd>
-
-<dt><a href="usage.html#allowobfuscation"><code><b>allowobfuscation:</b></code></a>
- <i>boolean</i>
- (default = false)</dt>
-<dd>Specifies whether the entry points specified in the keep tag may be
- obfuscated.</dd>
-
-</dl>
-
-Names arguments are comma-separated, as usual.
-
-<h2><a name="classspecification">Class Specifications</a></h2>
-
-A class specification is a template of classes and class members (fields and methods). There are two alternative ways to specify such a template:
-
-<ol>
-<li>As a string containing a ProGuard-style class specification. This is the
- most compact and most readable way. The specification looks like a Java
- declaration of a class with fields and methods. For example:
-<pre>
-keep 'public class mypackage.MyMainClass { \
- public static void main(java.lang.String[]); \
-}'
-</pre></li>
-<li>As a Gradle-style setting: a method calls with named arguments and a
- closure. This is more verbose, but it might be useful for programmatic
- specifications. For example:
-<pre>
-keep access: 'public',
- name: 'mypackage.MyMainClass', {
- method access: 'public static',
- type: 'void',
- name: 'main',
- parameters: 'java.lang.String[]'
-}
-</pre></li>
-</ol>
-<p>
-
-The <a href="usage.html#classspecification">ProGuard-style class
-specification</a> is described on the traditional Usage page.
-<p>
-A Gradle-style class specification can have the following named arguments:
-
-<dl>
-
-<dt><code><b>access:</b></code> '<i>access_modifiers</i>'</dt>
-<dd>The optional access modifiers of the class. Any space-separated list of
- "public", "final", and "abstract", with optional negators "!".</dd>
-
-<dt><code><b>annotation:</b></code> '<i>annotation_name</i>'</dt>
-<dd>The optional fully qualified name of an annotation of the class, with
- optional wildcards.</dd>
-
-<dt><code><b>type:</b></code> '<i>type</i>'</dt>
-<dd>The optional type of the class: one of "class", "interface", or
- "!interface".</dd>
-
-<dt><code><b>name:</b></code> '<i>class_name</i>'</dt>
-<dd>The optional fully qualified name of the class, with optional
- wildcards.</dd>
-
-<dt><code><b>extendsannotation:</b></code> '<i>annotation_name</i>'</dt>
-<dd>The optional fully qualified name of an annotation of the the class that
- the specified classes must extend, with optional wildcards.</dd>
-
-<dt><code><b>'extends':</b></code> '<i>class_name</i>'</dt>
-<dd>The optional fully qualified name of the class the specified classes
- must extend, with optional wildcards.</dd>
-
-<dt><code><b>'implements':</b></code> '<i>class_name</i>'</dt>
-<dd>The optional fully qualified name of the class the specified classes
- must implement, with optional wildcards.</dd>
-
-</dl>
-
-The named arguments are optional. Without any arguments, there are no
-constraints, so the settings match all classes.
-<p>
-
-<h3><a name="classmemberspecification">Gradle-style Class Member Specifications</a></h3>
-
-The closure of a Gradle-style class specification can specify class members
-with these settings:
-
-<dl>
-
-<dt><code><b>field</b></code> <i>field_constraints</i></dt>
-<dd>Specifies a field.</dd>
-
-<dt><code><b>method</b></code> <i>method_constraints</i></dt>
-<dd>Specifies a method.</dd>
-
-<dt><code><b>constructor</b></code> <i>constructor_constraints</i></dt>
-<dd>Specifies a constructor.</dd>
-
-</dl>
-
-A class member setting can have the following named arguments to express
-constraints:
-
-<dl>
-
-<dt><code><b>access:</b></code> '<i>access_modifiers</i>'</dt>
-<dd>The optional access modifiers of the class. Any space-separated list of
- "public", "protected", "private", "static", etc., with optional negators
- "!".</dd>
-
-<dt><code><b>'annotation':</b></code> '<i>annotation_name</i>'</dt>
-<dd>The optional fully qualified name of an annotation of the class member,
- with optional wildcards.</dd>
-
-<dt><code><b>type:</b></code> '<i>type</i>'</dt>
-<dd>The optional fully qualified type of the class member, with optional
- wildcards. Not applicable for constructors, but required for methods for
- which the <code>parameters</code> argument is specified.</dd>
-
-<dt><code><b>name:</b></code> '<i>name</i>'</dt>
-<dd>The optional name of the class member, with optional wildcards. Not
- applicable for constructors.</dd>
-
-<dt><code><b>parameters:</b></code> '<i>parameters</i>'</dt>
-<dd>The optional comma-separated list of fully qualified method parameters,
- with optional wildcards. Not applicable for fields, but required for
- constructors, and for methods for which the <code>type</code> argument is
- specified.</dd>
-
-</dl>
-
-The named arguments are optional. Without any arguments, there are no
-constraints, so the settings match all constructors, fields, or methods.
-<p>
-A class member setting doesn't have a closure.
-
-<h2><a name="anttask">Alternative: imported Ant task</a></h2>
-
-Instead of using the Gradle task, you could also integrate the Ant task in
-your Gradle build file:
-<p>
-<pre>
-ant.project.basedir = '../..'
-
-ant.taskdef(resource: 'proguard/ant/task.properties',
- classpath: '/usr/local/java/proguard/lib/proguard.jar')
-</pre>
-<p>
-
-Gradle automatically converts the elements and attributes to Groovy methods,
-so converting the configuration is essentially mechanical. The one-on-one
-mapping can be useful, but the resulting configuration is more verbose. For
-instance:
-<pre>
-task proguard << {
- ant.proguard(printmapping: 'proguard.map',
- overloadaggressively: 'on',
- repackageclasses: '',
- renamesourcefileattribute: 'SourceFile') {
-
- injar(file: 'application.jar')
- injar(file: 'gui.jar', filter: '!META-INF/**')
-
- .....
- }
-}
-</pre>
-<p>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/gui.html b/docs/manual/gui.html
deleted file mode 100644
index 176295e..0000000
--- a/docs/manual/gui.html
+++ /dev/null
@@ -1,483 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard GUI</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/gui.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/gui.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Graphical User Interface</h2>
-
-You can find the ProGuard GUI jar in the <code>lib</code> directory of the
-ProGuard distribution. To run the ProGuard graphical user interface, just type:
-<p class="code">
-<code><b>java -jar proguardgui.jar</b> [-nosplash] </code>[<i>configuration_file</i>]
-</p>
-Alternatively, the <code>bin</code> directory contains some short Linux and
-Windows scripts containing this command. The GUI will pop up in a window. With
-the <code>-nosplash</code> option, you can switch off the short opening
-animation. If you have specified a ProGuard configuration file, it will be
-loaded. The GUI works like a wizard. You can edit the configuration and
-execute ProGuard through a few tabs:
-<p>
-
-<table cellspacing="5" cellpadding="5">
-<tr><td class="button"><a href="#proguard">ProGuard</a></td>
- <td>Optionally load an existing configuration file.</td></tr>
-<tr><td class="button"><a href="#inputoutput">Input/Output</a></td>
- <td>Specify the program jars and library jars.</td></tr>
-<tr><td class="button"><a href="#shrinking">Shrinking</a></td>
- <td>Specify the shrinking options.</td></tr>
-<tr><td class="button"><a href="#obfuscation">Obfuscation</a></td>
- <td>Specify the obfuscation options.</td></tr>
-<tr><td class="button"><a href="#optimization">Optimization</a></td>
- <td>Specify the optimization options.</td></tr>
-<tr><td class="button"><a href="#information">Information</a></td>
- <td>Specify some options to get information.</td></tr>
-<tr><td class="button"><a href="#process">Process</a></td>
- <td>View and save the resulting configuration, and run ProGuard.</td></tr>
-</table>
-<p>
-
-In addition, there is a tab to execute ReTrace interactively:
-<p>
-
-<table cellspacing="5" cellpadding="5">
-<tr><td class="button"><a href="#retrace">ReTrace</a></td>
- <td>Set up and run ReTrace, to de-obfuscate stack traces.</td></tr>
-</table>
-<p>
-
-You can freely toggle between the tabs by means of the buttons on the
-left-hand side of the window, or by means of the <b>Previous</b> and
-<b>Next</b> buttons at the bottom of the tabs. Tool tips briefly explain the
-purpose of the numerous options and text fields, although a basic
-understanding of the shrinking/optimization/obfuscation/preverification
-process is assumed. Please refer to the <a
-href="introduction.html">Introduction</a> of this manual.
-<p>
-
-<h2><a name="proguard">The ProGuard Tab</a></h2>
-
-The <i>ProGuard</i> tab presents a welcome message and one important button at
-the bottom:
-<p>
-
-<table cellspacing="5" cellpadding="5">
-<tr><td class="button">Load configuration...</td>
- <td>opens a file chooser to load an existing ProGuard configuration
- file.</td></tr>
-</table>
-<p>
-
-If you don't want to load an existing configuration, you can just continue
-creating a new configuration from scratch.
-<p>
-
-<h2><a name="inputoutput">The Input/Output Tab</a></h2>
-
-The <i>Input/Output</i> tab contains two lists, respectively to specify the
-program jars (or aars, wars, ears, zips, apks, or directories), and the
-library jars (or aars, wars, ears, zips, apks, or directories).
-
-<ul>
-<li>The list of program jars contains input entries and output entries. Input
- entries contain the class files and resource files to be processed. Output
- entries specify the destinations to which the processed results will be
- written. They are preceded by arrows, to distinguish them from input
- entries. The results of each consecutive list of input entries will be
- written to the subsequent consecutive list of output entries.</li>
-
-<li>The library jars are not copied to the output jars; they contain class
- files that are used by class files in the program jars and that are
- necessary for correct processing. This list typically at least contains the
- targeted Java runtime jar.</li>
-</ul>
-<p>
-
-Each of these lists can be edited by means of a couple of buttons on the
-right-hand side:
-<p>
-
-<table cellspacing="5" cellpadding="5">
-<tr><td class="button">Add input...</td> <td>opens a file chooser to add an
- input entry to the list of program jars.</td></tr>
-<tr><td class="button">Add output...</td> <td>opens a file chooser to add an
- output entry to the list of program jars.</td></tr>
-<tr><td class="button">Add...</td>
- <td>opens a file chooser to add an entry to the list of library
- jars.</td></tr>
-<tr><td class="button">Edit...</td>
- <td>opens a file chooser to edit the selected entry in the list.</td></tr>
-<tr><td class="button">Filter...</td>
- <td>opens a text entry field to add or edit the filters of the selected
- entries in the list.</td></tr>
-<tr><td class="button">Remove</td>
- <td>removes the selected entries from the list.</td></tr>
-<tr><td class="button">Move up</td>
- <td>moves the selected entries one position up the list.</td></tr>
-<tr><td class="button">Move down</td>
- <td>moves the selected entries one position down the list.</td></tr>
-<tr><td class="button">Move to libraries</td>
- <td>moves the selected entries in the list of program jars to the list of
- library jars.</td></tr>
-<tr><td class="button">Move to program</td>
- <td>moves the selected entries in the list of library jars to the list of
- program jars.</td></tr>
-</table>
-<p>
-
-Filters allow to filter files based on their names. You can specify filters
-for class file names and resource file names, for jar file names, for aar file
-names, for war file names, for ear file names, for zip file names, and for
-apk file names. Multiple entries in the program list only make sense when
-combined with filters; each output file is written to the first entry with a
-matching filter.
-<p>
-
-Input entries that are currently not readable are colored red.
-<p>
-
-The order of the entries in each list may matter, as the first occurrence of
-any duplicate entries gets precedence, just as in conventional class paths.
-<p>
-
-Corresponding configuration options:
-<ul type="none">
-<li>-<a href="usage.html#injars">injars</a></li>
-<li>-<a href="usage.html#outjars">outjars</a></li>
-<li>-<a href="usage.html#libraryjars">libraryjars</a></li>
-<li><a href="usage.html#classpath"><i>class_path</i></a></li>
-<li><a href="usage.html#filters"><i>filters</i></a></li>
-</ul>
-<p>
-
-<h2><a name="shrinking">The Shrinking Tab</a></h2>
-
-The <i>Shrinking</i> tab presents a number of options that affect the
-shrinking step. The basic options are followed by a few lists of classes and
-class members (fields and methods) that must be protected from shrinking (and
-implicitly from obfuscation as well).
-<p>
-
-The fixed lists contain predefined entries that are typically useful for many
-applications. Each of these entries can be toggled by means of a check box.
-The text field following each entry allows to constrain the applicable classes
-by means of a comma-separated list of wildcarded, fully-qualified class
-names. The default is "*", which means that all input classes of the
-corresponding type are considered.
-<p>
-
-For example, checking the <b>Applications</b> entry and filling in
-"myapplications.**" after it would mean: keep all classes that have main
-methods in the "myapplications" package and all of its subpackages.
-<p>
-
-The variable list at the bottom allows to define additional entries
-yourself. The list can be edited by means of a couple of buttons on the
-right-hand side:
-<p>
-
-<table cellspacing="5" cellpadding="5">
-<tr><td class="button">Add...</td>
- <td>opens a window to add a new entry to the list.</td></tr>
-<tr><td class="button">Edit...</td>
- <td>opens a window to edit the selected entry in the list.</td></tr>
-<tr><td class="button">Remove</td>
- <td>removes the selected entries from the list.</td></tr>
-<tr><td class="button">Move up</td>
- <td>moves the selected entries one position up the list.</td></tr>
-<tr><td class="button">Move down</td>
- <td>moves the selected entries one position down the list.</td></tr>
-</table>
-<p>
-
-The interface windows allow to specify classes, fields, and methods. They
-contain text fields and check boxes to constrain these items. They have
-<b>Ok</b> and <b>Cancel</b> buttons to apply or to cancel the operation.
-<p>
-
-For example, your application may be creating some classes dynamically using
-<code>Class.forName</code>. You should then specify them here, so they are kept
-by their original names. Press the <b>Add...</b> button to open the class
-window. Fill out the fully-qualified class name in the <b>Code</b> text field,
-and press the <b>Ok</b> button. Repeat this for all required classes. Wildcards
-can be helpful to specify a large number of related classes in one go. If you
-want to specify all implementations of a certain interface, fill out the
-fully qualified interface name in the <b>Extends/implements class</b> instead.
-<p>
-
-For more advanced settings, it is advisable to become familiar with ProGuard's
-configuration options through the <a href="usage.html">Usage section</a> and
-the <a href="examples.html">Examples section</a>. We'll suffice with a brief
-overview of the three dialogs provided by the GUI.
-<p>
-
-The <i>keep class</i> dialog appears when adding or editing new special keep
-entries. It has text fields and selections for specifying and constraining
-classes and class members to keep. The <b>Advanced options</b> / <b>Basic
-options</b> button at the bottom of the dialog allows to toggle showing the
-advanced options.
-
-<ul>
-<li>The <b>Comments</b> text field allows to add optional comments to this
- entry. The comments will identify the entry in the list and they will
- appear as comments in the configuration file.</li>
-
-<li>The <b>Keep</b> selection allows to specify whether you want to protect
- the specified classes and their specified class members, or just the
- specified class members from the specified classes, or the specified
- classes and the specified class members, if the class members are present.
- Note that class members will only be protected if they are explicitly
- specified, even if only by means of a wildcard.</li>
-
-<li>The <b>Allow</b> selection allows to specify whether you want to allow the
- the specified classes and their specified class members to be shrunk,
- optimized and/or obfuscated.</li>
-
-<li>The <b>Access</b> selections allows to specify constraints on the class or
- classes, based on their access modifiers.</li>
-
-<li>The <b>Annotation</b> text field takes the fully-qualified name of an
- annotation that is required for matching classes. The annotation name can
- contain wildcards. This is an advanced option for defining <i>keep</i>
- annotations.</li>
-
-<li>The <b>Class</b> text field takes the fully-qualified name of the class or
- classes. The class name can contain wildcards.</li>
-
-<li>The <b>Annotation</b> text field takes the fully-qualified name of an
- annotation that is required for the class or interface that the above
- class must extend. The annotation name can contain wildcards. This is an
- advanced option for defining <i>keep</i> annotations.</li>
-
-<li>The <b>Extends/implements class</b> text field takes the fully-qualified
- name of the class or interface that the above classes must extend.</li>
-
-<li>The <b>Class members</b> list allows to specify a list of fields and
- methods to keep. It can be edited by means of a list of buttons on the
- right-hand side.</li>
-</ul>
-<p>
-
-The <i>keep field</i> dialog appears when adding or editing fields within the
-above dialog. It has text fields and selections for specifying and
-constraining fields to keep. Again, the <b>Advanced options</b> / <b>Basic
-options</b> button at the bottom of the dialog allows to toggle showing the
-advanced options.
-
-<ul>
-<li>The <b>Access</b> selections allows to specify constraints on the field or
- fields, based on their access modifiers.</li>
-
-<li>The <b>Annotation</b> text field takes the fully-qualified name of an
- annotation that is required for matching fields. The annotation name can
- contain wildcards. This is an advanced option for defining <i>keep</i>
- annotations.</li>
-
-<li>The <b>Return type</b> text field takes the fully-qualified type of the
- field or fields. The type can contain wildcards.</li>
-
-<li>The <b>Name</b> text field takes the name of the field or fields. The field
- name can contain wildcards.</li>
-</ul>
-<p>
-
-Similarly, the <i>keep method</i> dialog appears when adding or editing
-methods within the keep class dialog. It has text fields and selections for
-specifying and constraining methods to keep. Again, the <b>Advanced
-options</b> / <b>Basic options</b> button at the bottom of the dialog allows
-to toggle showing the advanced options.
-
-<ul>
-<li>The <b>Access</b> selections allows to specify constraints on the method or
- methods, based on their access modifiers.</li>
-
-<li>The <b>Annotation</b> text field takes the fully-qualified name of an
- annotation that is required for matching methods. The annotation name can
- contain wildcards. This is an advanced option for defining <i>keep</i>
- annotations.</li>
-
-<li>The <b>Return type</b> text field takes the fully-qualified type of the method or methods. The type can contain wildcards.</li>
-
-<li>The <b>Name</b> text field takes the name of the method or methods. The
- method name can contain wildcards.</li>
-
-<li>The <b>Arguments</b> text field takes the comma-separated list of
- fully-qualified method arguments. Each of these arguments can contain
- wildcards.</li>
-</ul>
-<p>
-
-Corresponding configuration options:
-<ul type="none">
-<li>-<a href="usage.html#dontshrink">dontshrink</a></li>
-<li>-<a href="usage.html#printusage">printusage</a></li>
-<li>-<a href="usage.html#keep">keep</a></li>
-<li>-<a href="usage.html#keepclassmembers">keepclassmembers</a></li>
-<li>-<a href="usage.html#keepclasseswithmembers">keepclasseswithmembers</a></li>
-</ul>
-<p>
-
-<h2><a name="obfuscation">The Obfuscation Tab</a></h2>
-
-The <i>Obfuscation</i> tab presents a number of options that affect the
-obfuscation step. The basic options are followed by a few lists of classes and
-class members (fields and methods) that must be protected from obfuscation
-(but not necessarily from shrinking).
-<p>
-
-The lists are manipulated in the same way as in the <a
-href="#shrinking">Shrinking Tab</a>.
-<p>
-
-Corresponding configuration options:
-<ul type="none">
-<li>-<a href="usage.html#dontobfuscate">dontobfuscate</a></li>
-<li>-<a href="usage.html#printmapping">printmapping</a></li>
-<li>-<a href="usage.html#applymapping">applymapping</a></li>
-<li>-<a href="usage.html#obfuscationdictionary">obfuscationdictionary</a></li>
-<li>-<a href="usage.html#classobfuscationdictionary">classobfuscationdictionary</a></li>
-<li>-<a href="usage.html#packageobfuscationdictionary">packageobfuscationdictionary</a></li>
-<li>-<a href="usage.html#overloadaggressively">overloadaggressively</a></li>
-<li>-<a href="usage.html#useuniqueclassmembernames">useuniqueclassmembernames</a></li>
-<li>-<a href="usage.html#dontusemixedcaseclassnames">dontusemixedcaseclassnames</a></li>
-<li>-<a href="usage.html#keeppackagenames">keeppackagenames</a></li>
-<li>-<a href="usage.html#flattenpackagehierarchy">flattenpackagehierarchy</a></li>
-<li>-<a href="usage.html#repackageclasses">repackageclasses</a></li>
-<li>-<a href="usage.html#keepattributes">keepattributes</a></li>
-<li>-<a href="usage.html#keepparameternames">keepparameternames</a></li>
-<li>-<a href="usage.html#renamesourcefileattribute">renamesourcefileattribute</a></li>
-<li>-<a href="usage.html#adaptclassstrings">adaptclassstrings</a></li>
-<li>-<a href="usage.html#adaptresourcefilenames">adaptresourcefilenames</a></li>
-<li>-<a href="usage.html#adaptresourcefilecontents">adaptresourcefilecontents</a></li>
-<li>-<a href="usage.html#keepnames">keepnames</a></li>
-<li>-<a href="usage.html#keepclassmembernames">keepclassmembernames</a></li>
-<li>-<a href="usage.html#keepclasseswithmembernames">keepclasseswithmembernames</a></li>
-<li><a href="usage.html#classspecification"><i>class_specification</i></a></li>
-</ul>
-<p>
-
-<h2><a name="optimization">The Optimization Tab</a></h2>
-
-The <i>Optimization</i> tab presents a number of options that affect the
-optimization step. The basic options are followed by a few lists of class
-method calls that can be removed if ProGuard can determine that their results
-are not being used.
-<p>
-
-The lists are manipulated in much the same way as in the <a
-href="#shrinking">Shrinking Tab</a>.
-<p>
-
-Corresponding configuration options:
-<ul type="none">
-<li>-<a href="usage.html#dontoptimize">dontoptimize</a></li>
-<li>-<a href="usage.html#optimizations">optimizations</a></li>
-<li>-<a href="usage.html#optimizationpasses">optimizationpasses</a></li>
-<li>-<a href="usage.html#allowaccessmodification">allowaccessmodification</a></li>
-<li>-<a href="usage.html#mergeinterfacesaggressively">mergeinterfacesaggressively</a></li>
-<li>-<a href="usage.html#assumenosideeffects">assumenosideeffects</a></li>
-<li><a href="usage.html#classspecification"><i>class_specification</i></a></li>
-</ul>
-<p>
-
-<h2><a name="information">The Information Tab</a></h2>
-
-The <i>Information</i> tab presents a number of options for preverification
-and targeting, and for the information that ProGuard returns when processing
-your code. The bottom list allows you to query ProGuard about why given
-classes and class members are being kept in the shrinking step.
-<p>
-
-Corresponding configuration options:
-<ul type="none">
-<li>-<a href="usage.html#dontpreverify">dontpreverify</a></li>
-<li>-<a href="usage.html#microedition">microedition</a></li>
-<li>-<a href="usage.html#target">target</a></li>
-<li>-<a href="usage.html#verbose">verbose</a></li>
-<li>-<a href="usage.html#dontnote">dontnote</a></li>
-<li>-<a href="usage.html#dontwarn">dontwarn</a></li>
-<li>-<a href="usage.html#ignorewarnings">ignorewarnings</a></li>
-<li>-<a href="usage.html#skipnonpubliclibraryclasses">skipnonpubliclibraryclasses</a></li>
-<li>-<a href="usage.html#dontskipnonpubliclibraryclasses">dontskipnonpubliclibraryclasses</a></li>
-<li>-<a href="usage.html#dontskipnonpubliclibraryclassmembers">dontskipnonpubliclibraryclassmembers</a></li>
-<li>-<a href="usage.html#keepdirectories">keepdirectories</a></li>
-<li>-<a href="usage.html#forceprocessing">forceprocessing</a></li>
-<li>-<a href="usage.html#printseeds">printseeds</a></li>
-<li>-<a href="usage.html#printconfiguration">printconfiguration</a></li>
-<li>-<a href="usage.html#dump">dump</a></li>
-<li>-<a href="usage.html#whyareyoukeeping">whyareyoukeeping</a></li>
-</ul>
-<p>
-
-<h2><a name="process">The Process Tab</a></h2>
-
-The <i>Process</i> tab has an output console for displaying the configuration
-and the messages while processing. There are three important buttons at the
-bottom:
-<p>
-
-<table cellspacing="5" cellpadding="5">
-<tr><td class="button">View configuration</td>
- <td>displays the current ProGuard configuration in the console.</td></tr>
-<tr><td class="button">Save configuration...</td>
- <td>opens a file chooser to save the current ProGuard
- configuration.</td></tr>
-<tr><td class="button">Process!</td>
- <td>executes ProGuard with the current configuration.</td></tr>
-</table>
-<p>
-
-<h2><a name="retrace">The ReTrace Tab</a></h2>
-
-The <i>ReTrace</i> tab has a panel with a few settings, an input text area for
-the obfuscated stack trace, and an output console to view the de-obfuscated
-stack trace:
-
-<ul>
-<li>The <b>Verbose</b> check box in the settings panel allows to toggle between
- normal mode and verbose mode.</li>
-
-<li>The <b>Mapping file</b> text field takes the name of the required mapping
- file that ProGuard wrote while processing the original code. The file name
- can be entered manually or by means of the <b>Browse...</b> button that
- opens a file chooser.</li>
-
-<li>The <b>Obfuscated stack trace</b> text area allows to enter the stack
- trace, typically by copying and pasting it from elsewhere. Alternatively,
- it can be loaded from a file by means of the load button below.</li>
-</ul>
-
-There are two buttons at the bottom:
-<p>
-
-<table cellspacing="5" cellpadding="5">
-<tr><td class="button">Load stack trace...</td>
- <td>opens a file chooser to load an obfuscated stack trace.</td></tr>
-<tr><td class="button">ReTrace!</td>
- <td>executes ReTrace with the current settings.</td></tr>
-</table>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/index.html b/docs/manual/index.html
deleted file mode 100644
index da93361..0000000
--- a/docs/manual/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Manual</title>
-</head>
-<body>
-
-<h2>ProGuard</h2>
-
-<ol>
-<li><a href="introduction.html">Introduction</a></li>
-<li><a href="usage.html">Usage</a></li>
-<li><a href="limitations.html">Limitations</a></li>
-<li><a href="examples.html">Examples</a></li>
-<li><a href="troubleshooting.html">Troubleshooting</a></li>
-<li><a href="refcard.html">Reference Card</a></li>
-<li><a href="gui.html">Graphical User Interface</a></li>
-<li><a href="ant.html">Ant Task</a></li>
-<li><a href="gradle.html">Gradle Task</a></li>
-<li><a href="wtk.html">JME Wireless Toolkit Integration</a></li>
-</ol>
-
-<h2>ReTrace</h2>
-
-<ol>
-<li><a href="retrace/introduction.html">Introduction</a></li>
-<li><a href="retrace/usage.html">Usage</a></li>
-<li><a href="retrace/examples.html">Examples</a></li>
-</ol>
-
-<hr />
-<noscript><div><a target="_top" href="../index.html" class="button">Show menu</a></div></noscript>
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/introduction.html b/docs/manual/introduction.html
deleted file mode 100644
index 3b1fc29..0000000
--- a/docs/manual/introduction.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Introduction</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/introduction.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/introduction.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Introduction</h2>
-
-<b>ProGuard</b> is a Java class file shrinker, optimizer, obfuscator, and
-preverifier. The shrinking step detects and removes unused classes, fields,
-methods, and attributes. The optimization step analyzes and optimizes the
-bytecode of the methods. The obfuscation step renames the remaining classes,
-fields, and methods using short meaningless names. These first steps make the
-code base smaller, more efficient, and harder to reverse-engineer. The final
-preverification step adds preverification information to the classes, which is
-required for Java Micro Edition and for Java 6 and higher.
-<p>
-Each of these steps is optional. For instance, ProGuard can also be used to
-just list dead code in an application, or to preverify class files for
-efficient use in Java 6.
-<p>
-
-<table class="diagram" align="center">
-
-<tr>
-<td rowspan="4" class="lightblock">Input jars</td>
-<td colspan="8" class="transparentblock"></td>
-</tr>
-
-<tr>
-<td rowspan="2" class="transparentblock"></td>
-<td rowspan="3" class="lightblock">Shrunk code</td>
-<td colspan="6" class="transparentblock"></td>
-</tr>
-
-<tr>
-<td class="transparentblock"></td>
-<td rowspan="2" class="lightblock">Optim. code</td>
-<td colspan="3" class="transparentblock"></td>
-<td rowspan="2" class="lightblock">Output jars</td>
-</tr>
-
-<tr>
-<td class="transparentblock">- shrink &rarr;</td>
-<td class="transparentblock">- optimize &rarr;</td>
-<td class="transparentblock">- obfuscate &rarr;</td>
-<td class="lightblock">Obfusc. code</td>
-<td class="transparentblock">- preverify &rarr;</td>
-</tr>
-
-<tr>
-<td class="darkblock">Library jars</td>
-<td colspan="7" class="transparentblock">------------------------------- (unchanged) -------------------------------&rarr;</td>
-<td class="darkblock">Library jars</td>
-</tr>
-
-</table>
-<p>
-
-ProGuard first reads the <b>input jars</b> (or aars, wars, ears, zips, apks,
-or directories). It then subsequently shrinks, optimizes, obfuscates, and
-preverifies them. You can optionally let ProGuard perform multiple
-optimization passes. ProGuard writes the processed results to one or
-more <b>output jars</b> (or aars, wars, ears, zips, apks, or directories). The
-input may contain resource files, whose names and contents can optionally be
-updated to reflect the obfuscated class names.
-<p>
-ProGuard requires the <b>library jars</b> (or aars, wars, ears, zips, apks, or
-directories) of the input jars to be specified. These are essentially the
-libraries that you would need for compiling the code. ProGuard uses them to
-reconstruct the class dependencies that are necessary for proper processing.
-The library jars themselves always remain unchanged. You should still put them
-in the class path of your final application.
-
-<h3>Entry points</h3>
-
-In order to determine which code has to be preserved and which code can be
-discarded or obfuscated, you have to specify one or more <i>entry points</i> to
-your code. These entry points are typically classes with main methods, applets,
-midlets, activities, etc.
-<ul>
-<li>In the <b>shrinking step</b>, ProGuard starts from these seeds and
- recursively determines which classes and class members are used. All other
- classes and class members are discarded.</li>
-
-<li>In the <b>optimization step</b>, ProGuard further optimizes the code.
- Among other optimizations, classes and methods that are not entry points
- can be made private, static, or final, unused parameters can be removed,
- and some methods may be inlined.</li>
-
-<li>In the <b>obfuscation step</b>, ProGuard renames classes and class members
- that are not entry points. In this entire process, keeping the entry
- points ensures that they can still be accessed by their original names.</li>
-
-<li>The <b>preverification step</b> is the only step that doesn't have to know
- the entry points.</li>
-</ul>
-<p>
-The <a href="usage.html">Usage section</a> of this manual describes the
-necessary <a href="usage.html#keepoptions"><code>-keep</code> options</a> and
-the <a href="examples.html">Examples section</a> provides plenty of examples.
-
-<h3>Reflection</h3>
-
-Reflection and introspection present particular problems for any automatic
-processing of code. In ProGuard, classes or class members in your code that
-are created or invoked dynamically (that is, by name) have to be specified as
-entry points too. For example, <code>Class.forName()</code> constructs may
-refer to any class at run-time. It is generally impossible to compute which
-classes have to be preserved (with their original names), since the class
-names might be read from a configuration file, for instance. You therefore
-have to specify them in your ProGuard configuration, with the same
-simple <code>-keep</code> options.
-<p>
-However, ProGuard will already detect and handle the following cases for you:
-
-<ul>
-<li><code>Class.forName("SomeClass")</code></li>
-<li><code>SomeClass.class</code></li>
-<li><code>SomeClass.class.getField("someField")</code></li>
-<li><code>SomeClass.class.getDeclaredField("someField")</code></li>
-<li><code>SomeClass.class.getMethod("someMethod", new Class[] {})</code></li>
-<li><code>SomeClass.class.getMethod("someMethod", new Class[] { A.class })</code></li>
-<li><code>SomeClass.class.getMethod("someMethod", new Class[] { A.class, B.class })</code></li>
-<li><code>SomeClass.class.getDeclaredMethod("someMethod", new Class[] {})</code></li>
-<li><code>SomeClass.class.getDeclaredMethod("someMethod", new Class[] { A.class })</code></li>
-<li><code>SomeClass.class.getDeclaredMethod("someMethod", new Class[] { A.class, B.class })</code></li>
-<li><code>AtomicIntegerFieldUpdater.newUpdater(SomeClass.class, "someField")</code></li>
-<li><code>AtomicLongFieldUpdater.newUpdater(SomeClass.class, "someField")</code></li>
-<li><code>AtomicReferenceFieldUpdater.newUpdater(SomeClass.class, SomeType.class, "someField")</code></li>
-</ul>
-
-The names of the classes and class members may of course be different, but the
-constructs should be literally the same for ProGuard to recognize them. The
-referenced classes and class members are preserved in the shrinking phase, and
-the string arguments are properly updated in the obfuscation phase.
-<p>
-Furthermore, ProGuard will offer some suggestions if keeping some classes or
-class members appears necessary. For example, ProGuard will note constructs
-like "<code>(SomeClass)Class.forName(variable).newInstance()</code>". These
-might be an indication that the class or interface <code>SomeClass</code>
-and/or its implementations may need to be preserved. You can then adapt your
-configuration accordingly.
-<p>
-For proper results, you should at least be somewhat familiar with the code
-that you are processing. Obfuscating code that performs a lot of reflection
-may require trial and error, especially without the necessary information
-about the internals of the code.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/limitations.html b/docs/manual/limitations.html
deleted file mode 100644
index 883d6e6..0000000
--- a/docs/manual/limitations.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Limitations</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/limitations.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/limitations.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Limitations</h2>
-
-When using ProGuard, you should be aware of a few technical issues, all of
-which are easily avoided or resolved:
-<p>
-<ul class="spacious">
-
-<li>For best results, ProGuard's optimization algorithms assume that the
- processed code never <b>intentionally throws NullPointerExceptions</b> or
- ArrayIndexOutOfBoundsExceptions, or even OutOfMemoryErrors or
- StackOverflowErrors, in order to achieve something useful. For instance,
- it may remove a method call <code>myObject.myMethod()</code> if that call
- wouldn't have any effect. It ignores the possibility that
- <code>myObject</code> might be null, causing a NullPointerException. In
- some way this is a good thing: optimized code may throw fewer exceptions.
- Should this entire assumption be false, you'll have to switch off
- optimization using the <code>-dontoptimize</code> option.</li>
-
-<li>ProGuard's optimization algorithms currently also assume that the
- processed code never creates <b>busy-waiting loops</b> without at least
- testing on a volatile field. Again, it may remove such loops. Should this
- assumption be false, you'll have to switch off optimization using
- the <code>-dontoptimize</code> option.</li>
-
-<li>If an input jar and a library jar contain classes in the <b>same
- package</b>, the obfuscated output jar may contain class names that
- overlap with class names in the library jar. This is most likely if the
- library jar has been obfuscated before, as it will then probably contain
- classes named 'a', 'b', etc. Packages should therefore never be split
- across input jars and library jars.</li>
-
-<li>When obfuscating, ProGuard writes out class files named
- "<code>a.class</code>", "<code>b.class</code>", etc. If a package contains
- a large number of classes, ProGuard may also write out
- <b>"<code>aux.class</code>"</b>. Inconveniently, Windows refuses to create
- files with this reserved name (among a few other names). It's generally
- better to write the output to a jar, in order to avoid such problems.</li>
-
-</ul>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/optimizations.html b/docs/manual/optimizations.html
deleted file mode 100644
index 4bb18c3..0000000
--- a/docs/manual/optimizations.html
+++ /dev/null
@@ -1,202 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>Optimizations</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/optimizations.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/optimizations.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Optimizations</h2>
-
-The optimization step of ProGuard can be switched off with the
-<a href="usage.html#dontoptimize"><code>-dontoptimize</code></a> option. For
-more fine-grained control over individual optimizations, experts can use the
-<a href="usage.html#optimizations"><code>-optimizations</code></a> option,
-with a filter based on the optimization names listed below. The filter works
-like any <a href="usage.html#filters">filter</a> in ProGuard.
-<p>
-
-The following wildcards are supported:
-
-<table cellspacing="10">
-<tr><td valign="top"><code><b>?</b></code></td>
- <td>matches any single character in an optimization name.</td></tr>
-<tr><td valign="top"><code><b>*</b></code></td>
- <td>matches any part of an optimization name.</td></tr>
-</table>
-
-An optimization that is preceded by an exclamation mark '<b>!</b>' is
-<i>excluded</i> from further attempts to match with <i>subsequent</i>
-optimization names in the filter. Make sure to specify filters correctly,
-since they are not checked for potential typos.
-<p>
-
-For example,
-"<code>code/simplification/variable,code/simplification/arithmetic</code>"
-only performs the two specified peephole optimizations.
-<p>
-
-For example, "<code>!method/propagation/*</code>" performs all optimizations,
-except the ones that propagate values between methods.
-<p>
-
-For example,
-"<code>!code/simplification/advanced,code/simplification/*</code>" only
-performs all peephole optimizations.
-<p>
-Some optimizations necessarily imply other optimizations. These are then
-indicated. Note that the list is likely to change over time, as optimizations
-are added and reorganized.
-<p>
-
-<dl>
-<dt><code><b>class/marking/final</b></code></dt>
-<dd>Marks classes as final, whenever possible.</dd>
-
-<dt><code><b>class/unboxing/enum</b></code></dt>
-<dd>Simplifies enum types to integer constants, whenever possible.</dd>
-
-<dt><code><b>class/merging/vertical</b></code></dt>
-<dd>Merges classes vertically in the class hierarchy, whenever possible.</dd>
-
-<dt><code><b>class/merging/horizontal</b></code></dt>
-<dd>Merges classes horizontally in the class hierarchy, whenever possible.</dd>
-
-<dt><div>(&rArr; <code>code/removal/advanced</code>)</div>
- <code><b>field/removal/writeonly</b></code></dt>
-<dd>Removes write-only fields.</dd>
-
-<dt><code><b>field/marking/private</b></code></dt>
-<dd>Marks fields as private, whenever possible.</dd>
-
-<dt><div>(&rArr; <code>code/simplification/advanced</code>)</div>
- <code><b>field/propagation/value</b></code></dt>
-<dd>Propagates the values of fields across methods.</dd>
-
-<dt><code><b>method/marking/private</b></code></dt>
-<dd>Marks methods as private, whenever possible (<i>devirtualization</i>).</dd>
-
-<dt><div>(&rArr; <code>code/removal/advanced</code>)</div>
- <code><b>method/marking/static</b></code></dt>
-<dd>Marks methods as static, whenever possible (<i>devirtualization</i>).</dd>
-
-<dt><code><b>method/marking/final</b></code></dt>
-<dd>Marks methods as final, whenever possible.</dd>
-
-<dt><div>(&rArr; <code>code/removal/advanced</code>)</div>
- <code><b>method/removal/parameter</b></code></dt>
-<dd>Removes unused method parameters.</dd>
-
-<dt><div>(&rArr; <code>code/simplification/advanced</code>)</div>
- <code><b>method/propagation/parameter</b></code></dt>
-<dd>Propagates the values of method parameters from method invocations to
- the invoked methods.</dd>
-
-<dt><div>(&rArr; <code>code/simplification/advanced</code>)</div>
- <code><b>method/propagation/returnvalue</b></code></dt>
-<dd>Propagates the values of method return values from methods to their
- invocations.</dd>
-
-<dt><code><b>method/inlining/short</b></code></dt>
-<dd>Inlines short methods.</dd>
-
-<dt><code><b>method/inlining/unique</b></code></dt>
-<dd>Inlines methods that are only called once.</dd>
-
-<dt><code><b>method/inlining/tailrecursion</b></code></dt>
-<dd>Simplifies tail recursion calls, whenever possible.</dd>
-
-<dt><code><b>code/merging</b></code></dt>
-<dd>Merges identical blocks of code by modifying branch targets.</dd>
-
-<dt><code><b>code/simplification/variable</b></code></dt>
-<dd>Performs peephole optimizations for variable loading and storing.</dd>
-
-<dt><code><b>code/simplification/arithmetic</b></code></dt>
-<dd>Performs peephole optimizations for arithmetic instructions.</dd>
-
-<dt><code><b>code/simplification/cast</b></code></dt>
-<dd>Performs peephole optimizations for casting operations.</dd>
-
-<dt><code><b>code/simplification/field</b></code></dt>
-<dd>Performs peephole optimizations for field loading and storing.</dd>
-
-<dt><div>(&rArr; <code>code/removal/simple</code>)</div>
- <code><b>code/simplification/branch</b></code></dt>
-<dd>Performs peephole optimizations for branch instructions.</dd>
-
-<dt><code><b>code/simplification/string</b></code></dt>
-<dd>Performs peephole optimizations for constant strings.</dd>
-
-<dt><div>(<i>best used with</i> <code>code/removal/advanced</code>)</div>
- <code><b>code/simplification/advanced</b></code></dt>
-<dd>Simplifies code based on control flow analysis and data flow
- analysis.</dd>
-
-<dt><div>(&rArr; <code>code/removal/exception</code>)</div>
- <code><b>code/removal/advanced</b></code></dt>
-<dd>Removes dead code based on control flow analysis and data flow
- analysis.</dd>
-
-<dt><div>(&rArr; <code>code/removal/exception</code>)</div>
- <code><b>code/removal/simple</b></code></dt>
-<dd>Removes dead code based on a simple control flow analysis.</dd>
-
-<dt><code><b>code/removal/variable</b></code></dt>
-<dd>Removes unused variables from the local variable frame.</dd>
-
-<dt><code><b>code/removal/exception</b></code></dt>
-<dd>Removes exceptions with empty try blocks.</dd>
-
-<dt><code><b>code/allocation/variable</b></code></dt>
-<dd>Optimizes variable allocation on the local variable frame.</dd>
-</dl>
-<p>
-
-ProGuard also provides some unofficial settings to control optimizations, that
-may disappear in future versions. These are Java system properties, which
-can be set as JVM arguments (with <code>-D.....)</code>:
-<dl>
-<dt><code><b>maximum.inlined.code.length</b></code> (default = 8 bytes)</dt>
-<dd>Specifies the maximum code length (expressed in bytes) of short methods
- that are eligible to be inlined. Inlining methods that are too long may
- unnecessarily inflate the code size.</dd>
-
-<dt><code><b>maximum.resulting.code.length</b></code> (default = 8000 bytes
- for JSE, 2000 bytes for JME)</dt>
-<dd>Specifies the maximum resulting code length (expressed in bytes) allowed
- when inlining methods. Many Java virtual machines do not apply just-in-time
- compilation to methods that are too long, so it's important not to let them
- grow too large.</dd>
-
-<dt><code><b>optimize.conservatively</b></code> (default = unset)</dt>
-<dd>Allows input code with ordinary instructions intentionally throwing
- <code>NullPointerException</code>,
- <code>ArrayIndexOutOfBoundsException</code>, or
- <code>ClassCastException</code>, without any other useful purposes. By
- default, ProGuard may just discard such seemingly useless instructions,
- resulting in better optimization of most common code.</dd>
-</dl>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/refcard.html b/docs/manual/refcard.html
deleted file mode 100644
index 87ffe09..0000000
--- a/docs/manual/refcard.html
+++ /dev/null
@@ -1,492 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Reference Card</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/refcard.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/refcard.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h1>ProGuard Reference Card</h1>
-
-<h2>Usage</h2>
-
-<code><b>java -jar proguard.jar </b></code><i>options</i> ...
-<p>
-&nbsp;&nbsp;Typically:
-<p>
-<code><b>java -jar proguard.jar @myconfig.pro</b></code>
-<p>
-
-<h2>Options</h2>
-
-<table cellspacing="10">
-
-<tr>
-<td valign="top"><a href="usage.html#at"><code><b>@</b></code></a><a href="usage.html#filename"><i>filename</i></a></td>
-
-<td>Short for '<code>-include</code> <i>filename</i>'.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#include"><code><b>-include</b></code></a>
- <a href="usage.html#filename"><i>filename</i></a></td>
-
-<td>Read configuration options from the given file.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#basedirectory"><code><b>-basedirectory</b></code></a>
- <a href="usage.html#filename"><i>directoryname</i></a></td>
-
-<td>Specifies the base directory for subsequent relative file names.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#injars"><code><b>-injars</b></code></a>
- <a href="usage.html#classpath"><i>class_path</i></a></td>
-<td>Specifies the program jars (or wars, ears, zips, or directories).</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#outjars"><code><b>-outjars</b></code></a>
- <a href="usage.html#classpath"><i>class_path</i></a></td>
-<td>Specifies the names of the output jars (or wars, ears, zips, or
- directories).</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#libraryjars"><code><b>-libraryjars</b></code></a>
- <a href="usage.html#classpath"><i>class_path</i></a></td>
-<td>Specifies the library jars (or wars, ears, zips, or directories).</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#skipnonpubliclibraryclasses"><code><b>-skipnonpubliclibraryclasses</b></code></a></td>
-<td>Ignore non-public library classes.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#dontskipnonpubliclibraryclasses"><code><b>-dontskipnonpubliclibraryclasses</b></code></a></td>
-<td>Don't ignore non-public library classes (the default).</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#dontskipnonpubliclibraryclassmembers"><code><b>-dontskipnonpubliclibraryclassmembers</b></code></a></td>
-<td>Don't ignore package visible library class members.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#keepdirectories"><code><b>-keepdirectories</b></code></a>
- [<a href="usage.html#filters"><i>directory_filter</i></a>]</td>
-<td>Keep the specified directories in the output jars (or wars, ears, zips, or
- directories).</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#target"><code><b>-target</b></code></a>
- <i>version</i></td>
-<td>Set the given version number in the processed classes.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#forceprocessing"><code><b>-forceprocessing</b></code></a></td>
-<td>Process the input, even if the output seems up to date.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#keep"><code><b>-keep</b></code></a>
- [<a href="usage.html#keepoptionmodifiers">,<i>modifier</i></a>,...]
- <a href="usage.html#classspecification"><i>class_specification</i></a></td>
-<td>Preserve the specified classes <i>and</i> class members.</td>
-
-</tr>
-<tr>
-<td valign="top"><a href="usage.html#keepclassmembers"><code><b>-keepclassmembers</b></code></a>
- [<a href="usage.html#keepoptionmodifiers">,<i>modifier</i></a>,...]
- <a href="usage.html#classspecification"><i>class_specification</i></a></td>
-<td>Preserve the specified class members, if their classes are preserved as
- well.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#keepclasseswithmembers"><code><b>-keepclasseswithmembers</b></code></a>
- [<a href="usage.html#keepoptionmodifiers">,<i>modifier</i></a>,...]
- <a href="usage.html#classspecification"><i>class_specification</i></a></td>
-<td>Preserve the specified classes <i>and</i> class members, if all of the
- specified class members are present.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#keepnames"><code><b>-keepnames</b></code></a>
- <a href="usage.html#classspecification"><i>class_specification</i></a></td>
-<td>Preserve the names of the specified classes <i>and</i> class members (if
- they aren't removed in the shrinking step).</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#keepclassmembernames"><code><b>-keepclassmembernames</b></code></a>
- <a href="usage.html#classspecification"><i>class_specification</i></a></td>
-<td>Preserve the names of the specified class members (if they aren't removed
- in the shrinking step).</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#keepclasseswithmembernames"><code><b>-keepclasseswithmembernames</b></code></a>
- <a href="usage.html#classspecification"><i>class_specification</i></a></td>
-<td>Preserve the names of the specified classes <i>and</i> class members, if
- all of the specified class members are present (after the shrinking
- step).</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#printseeds"><code><b>-printseeds</b></code></a>
- [<a href="usage.html#filename"><i>filename</i></a>]</td>
-<td>List classes and class members matched by the various <code>-keep</code>
- options, to the standard output or to the given file.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#dontshrink"><code><b>-dontshrink</b></code></a></td>
-<td>Don't shrink the input class files.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#printusage"><code><b>-printusage</b></code></a>
- [<a href="usage.html#filename"><i>filename</i></a>]</td>
-<td>List dead code of the input class files, to the standard output or to the
- given file.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#whyareyoukeeping"><code><b>-whyareyoukeeping</b></code></a>
- <a href="usage.html#classspecification"><i>class_specification</i></a></td>
-<td>Print details on why the given classes and class members are being kept in
- the shrinking step.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#dontoptimize"><code><b>-dontoptimize</b></code></a></td>
-<td>Don't optimize the input class files.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#optimizations"><code><b>-optimizations</b></code></a>
- <a href="optimizations.html"><i>optimization_filter</i></a></td>
-<td>The optimizations to be enabled and disabled.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#optimizationpasses"><code><b>-optimizationpasses</b></code></a>
- <i>n</i></td>
-<td>The number of optimization passes to be performed.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#assumenosideeffects"><code><b>-assumenosideeffects</b></code></a>
- <a href="usage.html#classspecification"><i>class_specification</i></a></td>
-<td>Assume that the specified methods don't have any side effects, while
- optimizing.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#allowaccessmodification"><code><b>-allowaccessmodification</b></code></a></td>
-<td>Allow the access modifiers of classes and class members to be modified,
- while optimizing.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#mergeinterfacesaggressively"><code><b>-mergeinterfacesaggressively</b></code></a></td>
-<td>Allow any interfaces to be merged, while optimizing.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#dontobfuscate"><code><b>-dontobfuscate</b></code></a></td>
-<td>Don't obfuscate the input class files.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#printmapping"><code><b>-printmapping</b></code></a>
- [<a href="usage.html#filename"><i>filename</i></a>]</td>
-<td>Print the mapping from old names to new names for classes and class members
- that have been renamed, to the standard output or to the given file.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#applymapping"><code><b>-applymapping</b></code></a>
- <a href="usage.html#filename"><i>filename</i></a></td>
-<td>Reuse the given mapping, for incremental obfuscation.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#obfuscationdictionary"><code><b>-obfuscationdictionary</b></code></a>
- <a href="usage.html#filename"><i>filename</i></a></td>
-<td>Use the words in the given text file as obfuscated field names and method names.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#classobfuscationdictionary"><code><b>-classobfuscationdictionary</b></code></a>
- <a href="usage.html#filename"><i>filename</i></a></td>
-<td>Use the words in the given text file as obfuscated class names.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#packageobfuscationdictionary"><code><b>-packageobfuscationdictionary</b></code></a>
- <a href="usage.html#filename"><i>filename</i></a></td>
-<td>Use the words in the given text file as obfuscated package names.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#overloadaggressively"><code><b>-overloadaggressively</b></code></a></td>
-<td>Apply aggressive overloading while obfuscating.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#useuniqueclassmembernames"><code><b>-useuniqueclassmembernames</b></code></a></td>
-<td>Ensure uniform obfuscated class member names for subsequent incremental
- obfuscation.</td> </tr>
-
-<tr>
-<td valign="top"><a href="usage.html#dontusemixedcaseclassnames"><code><b>-dontusemixedcaseclassnames</b></code></a></td>
-<td>Don't generate mixed-case class names while obfuscating.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#keeppackagenames"><code><b>-keeppackagenames</b></code></a>
- [<i><a href="usage.html#filters">package_filter</a></i>]</td>
-<td>Keep the specified package names from being obfuscated.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#flattenpackagehierarchy"><code><b>-flattenpackagehierarchy</b></code></a>
- [<i>package_name</i>]</td>
-<td>Repackage all packages that are renamed into the single given parent
- package.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#repackageclasses"><code><b>-repackageclasses</b></code></a>
- [<i>package_name</i>]</td>
-<td>Repackage all class files that are renamed into the single given
- package.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#keepattributes"><code><b>-keepattributes</b></code></a>
- [<i><a href="usage.html#filters">attribute_filter</a></i>]</td>
-<td>Preserve the given optional attributes; typically
- <code>Exceptions</code>, <code>InnerClasses</code>,
- <code>Signature</code>, <code>Deprecated</code>,
- <code>SourceFile</code>, <code>SourceDir</code>,
- <code>LineNumberTable</code>,
- <code>LocalVariableTable</code>, <code>LocalVariableTypeTable</code>,
- <code>Synthetic</code>, <code>EnclosingMethod</code>, and
- <code>*Annotation*</code>.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#keepparameternames"><code><b>-keepparameternames</b></code></a></td>
-<td>Keep the parameter names and types of methods that are kept.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#renamesourcefileattribute"><code><b>-renamesourcefileattribute</b></code></a>
- [<i>string</i>]</td>
-<td>Put the given constant string in the <code>SourceFile</code>
- attributes.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#adaptclassstrings"><code><b>-adaptclassstrings</b></code></a>
- [<a href="usage.html#filters"><i>class_filter</i></a>]</td>
-<td>Adapt string constants in the specified classes, based on the obfuscated
- names of any corresponding classes.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#adaptresourcefilenames"><code><b>-adaptresourcefilenames</b></code></a>
- [<a href="usage.html#filefilters"><i>file_filter</i></a>]</td>
-<td>Rename the specified resource files, based on the obfuscated names of the
- corresponding class files.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#adaptresourcefilecontents"><code><b>-adaptresourcefilecontents</b></code></a>
- [<a href="usage.html#filefilters"><i>file_filter</i></a>]</td>
-<td>Update the contents of the specified resource files, based on the
- obfuscated names of the processed classes.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#dontpreverify"><code><b>-dontpreverify</b></code></a></td>
-<td>Don't preverify the processed class files.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#microedition"><code><b>-microedition</b></code></a></td>
-<td>Target the processed class files at Java Micro Edition.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#verbose"><code><b>-verbose</b></code></a></td>
-<td>Write out some more information during processing.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#dontnote"><code><b>-dontnote</b></code></a>
- [<a href="usage.html#filters"><i>class_filter</i></a>]</td>
-<td>Don't print notes about potential mistakes or omissions in the
- configuration.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#dontwarn"><code><b>-dontwarn</b></code></a>
- [<a href="usage.html#filters"><i>class_filter</i></a>]</td>
-<td>Don't warn about unresolved references at all.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#ignorewarnings"><code><b>-ignorewarnings</b></code></a></td>
-<td>Print warnings about unresolved references, but continue processing
- anyhow.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#printconfiguration"><code><b>-printconfiguration</b></code></a>
- [<a href="usage.html#filename"><i>filename</i></a>]</td>
-<td>Write out the entire configuration in traditional ProGuard style, to the
- standard output or to the given file.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#dump"><code><b>-dump</b></code></a>
- [<a href="usage.html#filename"><i>filename</i></a>]</td>
-<td>Write out the internal structure of the processed class files, to the
- standard output or to the given file.</td>
-</tr>
-
-</table>
-<p>
-Notes:
-<ul>
-
-<li><i>class_path</i> is a list of jars, wars, ears, zips, and directories,
- with optional filters, separated by path separators.</li>
-<li><i>filename</i> can contain Java system properties delimited by
- '<b>&lt;</b>' and '<b>&gt;</b>'.</li>
-<li>If <i>filename</i> contains special characters, the entire name
- should be quoted with single or double quotes.</li>
-</ul>
-<p>
-
-<h2>Overview of <code>Keep</code> Options</h2>
-
-<table cellpadding="5">
-
-<tr>
-<th>Keep</th>
-<td>From being removed or renamed</td>
-<td>From being renamed</td>
-</tr>
-
-<tr>
-<td>Classes and class members</td>
-<td bgcolor="#E0E0E0"><a href="usage.html#keep"><code>-keep</code></a></td>
-<td bgcolor="#E0E0E0"><a href="usage.html#keepnames"><code>-keepnames</code></a></td>
-</tr>
-
-<tr>
-<td>Class members only</td>
-<td bgcolor="#E0E0E0"><a href="usage.html#keepclassmembers"><code>-keepclassmembers</code></a></td>
-<td bgcolor="#E0E0E0"><a href="usage.html#keepclassmembernames"><code>-keepclassmembernames</code></a></td>
-</tr>
-
-<tr>
-<td>Classes and class members, if class members present</td>
-<td bgcolor="#E0E0E0"><a href="usage.html#keepclasseswithmembers"><code>-keepclasseswithmembers</code></a></td>
-<td bgcolor="#E0E0E0"><a href="usage.html#keepclasseswithmembernames"><code>-keepclasseswithmembernames</code></a></td>
-</tr>
-
-</table>
-<p>
-
-<h2>Keep Option Modifiers</h2>
-
-<table cellspacing="10">
-
-<tr>
-<td valign="top"><a href="usage.html#includedescriptorclasses"><code><b>includedescriptorclasses</b></code></a></td>
-<td>Also keep any classes in the descriptors of specified fields and methods.
-</tr>
-
-<td valign="top"><a href="usage.html#allowshrinking"><code><b>allowshrinking</b></code></a></td>
-<td>Allow the specified entry points to be removed in the shrinking step.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#allowoptimization"><code><b>allowoptimization</b></code></a></td>
-<td>Allow the specified entry points to be modified in the optimization
- step.</td>
-</tr>
-
-<tr>
-<td valign="top"><a href="usage.html#allowobfuscation"><code><b>allowobfuscation</b></code></a></td>
-<td>Allow the specified entry points to be renamed in the obfuscation step.</td>
-</tr>
-
-</table>
-<p>
-
-<h2>Class Specifications</h2>
-
-<pre>
-[<b>@</b><i>annotationtype</i>] [[<b>!</b>]<b>public</b>|<b>final</b>|<b>abstract</b> ...] [<b>!</b>]<b>interface</b>|<b>class</b> <i>classname</i>
- [<b>extends</b>|<b>implements</b> [<b>@</b><i>annotationtype</i>] <i>classname</i>]
-[<b>{</b>
- [<b>@</b><i>annotationtype</i>] [[<b>!</b>]<b>public</b>|<b>private</b>|<b>protected</b>|<b>static</b>|<b>volatile</b>|<b>transient</b> ...] <b>&lt;fields&gt;</b> |
- (<i>fieldtype fieldname</i>)<b>;</b>
- [<b>@</b><i>annotationtype</i>] [[<b>!</b>]<b>public</b>|<b>private</b>|<b>protected</b>|<b>static</b>|<b>synchronized</b>|<b>native</b>|<b>abstract</b>|<b>strictfp</b> ...] <b>&lt;methods&gt;</b> |
- <b>&lt;init&gt;(</b><i>argumenttype,...</i><b>)</b> |
- <i>classname</i><b>(</b><i>argumenttype,...</i><b>)</b> |
- (<i>returntype methodname</i><b>(</b><i>argumenttype,...</i><b>)</b>)<b>;</b>
- [<b>@</b><i>annotationtype</i>] [[<b>!</b>]<b>public</b>|<b>private</b>|<b>protected</b>|<b>static</b> ... ] <b>*;</b>
- ...
-<b>}</b>]
-</pre>
-<p>
-Notes:
-<ul>
-<li>Class names must always be fully qualified, i.e. including their package
- names.</li>
-<li>Types in <i>classname</i>, <i>annotationtype</i>, <i>returntype</i>, and
- <i>argumenttype</i> can contain wildcards: '<code><b>?</b></code>' for a
- single character, '<code><b>*</b></code>' for any number of characters
- (but not the package separator), '<code><b>**</b></code>' for any number
- of (any) characters, '<code><b>%</b></code>' for any primitive type,
- '<code><b>***</b></code>' for any type, and '<code><b>...</b></code>' for any number of arguments.</li>
-<li><i>fieldname</i> and <i>methodname</i> can contain wildcards as well:
- '<code><b>?</b></code>' for a single character and '<code><b>*</b></code>'
- for any number of characters.</li>
-</ul>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/retrace/examples.html b/docs/manual/retrace/examples.html
deleted file mode 100644
index 4eef0ff..0000000
--- a/docs/manual/retrace/examples.html
+++ /dev/null
@@ -1,346 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="../style.css">
-<title>ReTrace Examples</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../../index.html#manual/retrace/examples.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../../index.html#manual/retrace/examples.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Examples</h2>
-
-Some typical example uses:
-<ol>
-<li><a href="#with">Restoring a stack trace with line numbers</a></li>
-<li><a href="#withverbose">Restoring a stack trace with line numbers
- (verbose)</a></li>
-<li><a href="#without">Restoring a stack trace without line numbers</a></li>
-</ol>
-
-<h3><a name="with">Restoring a stack trace with line numbers</a></h3>
-
-Assume for instance ProGuard itself has been obfuscated using the following
-extra options:
-<pre>
--printmapping proguard.map
-
--renamesourcefileattribute ProGuard
--keepattributes SourceFile,LineNumberTable
-</pre>
-<p>
-
-Now assume the processed application throws an exception, and we have saved the
-stack trace in <code>proguard.trace</code>, shown below. Of course, in real
-life ProGuard rarely throws exceptions, so this is a purposely generated
-exception. :)
-
-<pre>
-Exception in thread "main" java.lang.Error: Random exception
- at pro.bY.a(ProGuard:576)
- at pro.bO.a(ProGuard:431)
- at pro.bj.a(ProGuard:145)
- at pro.bY.a(ProGuard:522)
- at pro.bj.a(ProGuard:129)
- at pro.bN.a(ProGuard:125)
- at pro.bY.a(ProGuard:251)
- at pro.bY.a(ProGuard:229)
- at pro.l.a(ProGuard:55)
- at pro.bo.b(ProGuard:405)
- at pro.ci.a(ProGuard:51)
- at pro.bo.a(ProGuard:356)
- at pro.be.a(ProGuard:109)
- at pro.bo.a(ProGuard:356)
- at pro.be.a(ProGuard:186)
- at pro.bg.a(ProGuard:369)
- at pro.bY.a(ProGuard:286)
- at pro.bh.a(ProGuard:55)
- at pro.bg.b(ProGuard:408)
- at pro.bY.a(ProGuard:190)
- at pro.bg.a(ProGuard:369)
- at pro.M.a(ProGuard:110)
- at pro.bY.a(ProGuard:449)
- at pro.M.a(ProGuard:99)
- at pro.bo.a(ProGuard:372)
- at pro.bY.a(ProGuard:649)
- at pro.bY.a(ProGuard:112)
- at pro.P.a(ProGuard:66)
- at pro.p.a(ProGuard:83)
- at pro.bU.a(ProGuard:69)
- at pro.bo.a(ProGuard:356)
- at pro.J.a(ProGuard:149)
- at pro.I.a(ProGuard:49)
- at pro.J.a(ProGuard:105)
- at pro.cf.c(ProGuard:370)
- at pro.cf.a(ProGuard:317)
- at pro.bc.a(ProGuard:55)
- at proguard.ProGuard.a(ProGuard:363)
- at proguard.ProGuard.c(ProGuard:187)
- at proguard.ProGuard.b(ProGuard:385)
- at proguard.ProGuard.main(ProGuard:429)
-</pre>
-<p>
-
-We can then use the following command to recover the stack trace:
-<pre>
-<b>java -jar retrace.jar proguard.map proguard.trace</b>
-</pre>
-<p>
-
-The output will look as follows:
-<pre>
-Exception in thread "main" java.lang.Error: Random exception
- at proguard.shrink.UsageMarker.visitInstruction(ProGuard:576)
- at proguard.classfile.instruction.GenericInstruction.accept(ProGuard:431)
- at proguard.classfile.CodeAttrInfo.instructionsAccept(ProGuard:145)
- at proguard.shrink.UsageMarker.visitCodeAttrInfo(ProGuard:522)
- at proguard.classfile.CodeAttrInfo.accept(ProGuard:129)
- at proguard.classfile.ProgramMemberInfo.attributesAccept(ProGuard:125)
- at proguard.shrink.UsageMarker.visitMemberInfo(ProGuard:251)
- at proguard.shrink.UsageMarker.visitProgramMethodInfo(ProGuard:229)
- at proguard.classfile.ProgramMethodInfo.accept(ProGuard:55)
- at proguard.classfile.ProgramClassFile.methodAccept(ProGuard:405)
- at proguard.classfile.visitor.NamedMethodVisitor.visitProgramClassFile(ProGuard:51)
- at proguard.classfile.ProgramClassFile.accept(ProGuard:356)
- at proguard.classfile.visitor.ClassFileUpDownTraveler.visitProgramClassFile(ProGuard:109)
- at proguard.classfile.ProgramClassFile.accept(ProGuard:356)
- at proguard.classfile.visitor.ClassFileUpDownTraveler.visitLibraryClassFile(ProGuard:186)
- at proguard.classfile.LibraryClassFile.accept(ProGuard:369)
- at proguard.shrink.UsageMarker.visitLibraryMethodInfo(ProGuard:286)
- at proguard.classfile.LibraryMethodInfo.accept(ProGuard:55)
- at proguard.classfile.LibraryClassFile.methodsAccept(ProGuard:408)
- at proguard.shrink.UsageMarker.visitLibraryClassFile(ProGuard:190)
- at proguard.classfile.LibraryClassFile.accept(ProGuard:369)
- at proguard.classfile.ClassCpInfo.referencedClassAccept(ProGuard:110)
- at proguard.shrink.UsageMarker.visitClassCpInfo(ProGuard:449)
- at proguard.classfile.ClassCpInfo.accept(ProGuard:99)
- at proguard.classfile.ProgramClassFile.constantPoolEntryAccept(ProGuard:372)
- at proguard.shrink.UsageMarker.markCpEntry(ProGuard:649)
- at proguard.shrink.UsageMarker.visitProgramClassFile(ProGuard:112)
- at proguard.classfile.visitor.VariableClassFileVisitor.visitProgramClassFile(ProGuard:66)
- at proguard.classfile.visitor.MultiClassFileVisitor.visitProgramClassFile(ProGuard:83)
- at proguard.classfile.visitor.FilteredClassFileVisitor.visitProgramClassFile(ProGuard:69)
- at proguard.classfile.ProgramClassFile.accept(ProGuard:356)
- at proguard.classfile.ClassPool.classFileAccept(ProGuard:149)
- at proguard.classfile.visitor.NamedClassFileVisitor.visitClassPool(ProGuard:49)
- at proguard.classfile.ClassPool.accept(ProGuard:105)
- at proguard.KeepCommand.executeShrinkingPhase(ProGuard:370)
- at proguard.KeepCommand.execute(ProGuard:317)
- at proguard.CompoundCommand.execute(ProGuard:55)
- at proguard.ProGuard.executeCommands(ProGuard:363)
- at proguard.ProGuard.shrink(ProGuard:187)
- at proguard.ProGuard.execute(ProGuard:385)
- at proguard.ProGuard.main(ProGuard:429)
-</pre>
-
-<h3><a name="withverbose">Restoring a stack trace with line numbers (verbose)</a></h3>
-
-In the previous example, we could also use the verbose flag:
-<pre>
-<b>java -jar retrace.jar -verbose proguard.map proguard.trace</b>
-</pre>
-<p>
-
-The output will then look as follows:
-<pre>
-Exception in thread "main" java.lang.Error: Random exception
- at proguard.shrink.UsageMarker.void visitInstruction(proguard.classfile.ClassFile,proguard.classfile.instruction.Instruction)(ProGuard:576)
- at proguard.classfile.instruction.GenericInstruction.void accept(proguard.classfile.ClassFile,proguard.classfile.instruction.InstructionVisitor)(ProGuard:431)
- at proguard.classfile.CodeAttrInfo.void instructionsAccept(proguard.classfile.ClassFile,proguard.classfile.instruction.InstructionVisitor)(ProGuard:145)
- at proguard.shrink.UsageMarker.void visitCodeAttrInfo(proguard.classfile.ClassFile,proguard.classfile.CodeAttrInfo)(ProGuard:522)
- at proguard.classfile.CodeAttrInfo.void accept(proguard.classfile.ClassFile,proguard.classfile.visitor.AttrInfoVisitor)(ProGuard:129)
- at proguard.classfile.ProgramMemberInfo.void attributesAccept(proguard.classfile.ProgramClassFile,proguard.classfile.visitor.AttrInfoVisitor)(ProGuard:125)
- at proguard.shrink.UsageMarker.void visitMemberInfo(proguard.classfile.ProgramClassFile,proguard.classfile.ProgramMemberInfo)(ProGuard:251)
- at proguard.shrink.UsageMarker.void visitProgramMethodInfo(proguard.classfile.ProgramClassFile,proguard.classfile.ProgramMethodInfo)(ProGuard:229)
- at proguard.classfile.ProgramMethodInfo.void accept(proguard.classfile.ProgramClassFile,proguard.classfile.visitor.MemberInfoVisitor)(ProGuard:55)
- at proguard.classfile.ProgramClassFile.void methodAccept(proguard.classfile.visitor.MemberInfoVisitor,java.lang.String,java.lang.String)(ProGuard:405)
- at proguard.classfile.visitor.NamedMethodVisitor.void visitProgramClassFile(proguard.classfile.ProgramClassFile)(ProGuard:51)
- at proguard.classfile.ProgramClassFile.void accept(proguard.classfile.visitor.ClassFileVisitor)(ProGuard:356)
- at proguard.classfile.visitor.ClassFileUpDownTraveler.void visitProgramClassFile(proguard.classfile.ProgramClassFile)(ProGuard:109)
- at proguard.classfile.ProgramClassFile.void accept(proguard.classfile.visitor.ClassFileVisitor)(ProGuard:356)
- at proguard.classfile.visitor.ClassFileUpDownTraveler.void visitLibraryClassFile(proguard.classfile.LibraryClassFile)(ProGuard:186)
- at proguard.classfile.LibraryClassFile.void accept(proguard.classfile.visitor.ClassFileVisitor)(ProGuard:369)
- at proguard.shrink.UsageMarker.void visitLibraryMethodInfo(proguard.classfile.LibraryClassFile,proguard.classfile.LibraryMethodInfo)(ProGuard:286)
- at proguard.classfile.LibraryMethodInfo.void accept(proguard.classfile.LibraryClassFile,proguard.classfile.visitor.MemberInfoVisitor)(ProGuard:55)
- at proguard.classfile.LibraryClassFile.void methodsAccept(proguard.classfile.visitor.MemberInfoVisitor)(ProGuard:408)
- at proguard.shrink.UsageMarker.void visitLibraryClassFile(proguard.classfile.LibraryClassFile)(ProGuard:190)
- at proguard.classfile.LibraryClassFile.void accept(proguard.classfile.visitor.ClassFileVisitor)(ProGuard:369)
- at proguard.classfile.ClassCpInfo.void referencedClassAccept(proguard.classfile.visitor.ClassFileVisitor)(ProGuard:110)
- at proguard.shrink.UsageMarker.void visitClassCpInfo(proguard.classfile.ClassFile,proguard.classfile.ClassCpInfo)(ProGuard:449)
- at proguard.classfile.ClassCpInfo.void accept(proguard.classfile.ClassFile,proguard.classfile.visitor.CpInfoVisitor)(ProGuard:99)
- at proguard.classfile.ProgramClassFile.void constantPoolEntryAccept(proguard.classfile.visitor.CpInfoVisitor,int)(ProGuard:372)
- at proguard.shrink.UsageMarker.void markCpEntry(proguard.classfile.ClassFile,int)(ProGuard:649)
- at proguard.shrink.UsageMarker.void visitProgramClassFile(proguard.classfile.ProgramClassFile)(ProGuard:112)
- at proguard.classfile.visitor.VariableClassFileVisitor.void visitProgramClassFile(proguard.classfile.ProgramClassFile)(ProGuard:66)
- at proguard.classfile.visitor.MultiClassFileVisitor.void visitProgramClassFile(proguard.classfile.ProgramClassFile)(ProGuard:83)
- at proguard.classfile.visitor.FilteredClassFileVisitor.void visitProgramClassFile(proguard.classfile.ProgramClassFile)(ProGuard:69)
- at proguard.classfile.ProgramClassFile.void accept(proguard.classfile.visitor.ClassFileVisitor)(ProGuard:356)
- at proguard.classfile.ClassPool.void classFileAccept(proguard.classfile.visitor.ClassFileVisitor,java.lang.String)(ProGuard:149)
- at proguard.classfile.visitor.NamedClassFileVisitor.void visitClassPool(proguard.classfile.ClassPool)(ProGuard:49)
- at proguard.classfile.ClassPool.void accept(proguard.classfile.visitor.ClassPoolVisitor)(ProGuard:105)
- at proguard.KeepCommand.void executeShrinkingPhase(proguard.classfile.ClassPool,proguard.classfile.ClassPool)(ProGuard:370)
- at proguard.KeepCommand.void execute(int,proguard.classfile.ClassPool,proguard.classfile.ClassPool)(ProGuard:317)
- at proguard.CompoundCommand.void execute(int,proguard.classfile.ClassPool,proguard.classfile.ClassPool)(ProGuard:55)
- at proguard.ProGuard.void executeCommands(int)(ProGuard:363)
- at proguard.ProGuard.void shrink()(ProGuard:187)
- at proguard.ProGuard.void execute(java.lang.String[])(ProGuard:385)
- at proguard.ProGuard.void main(java.lang.String[])(ProGuard:429)
-</pre>
-
-
-<h3><a name="without">Restoring a stack trace without line numbers</a></h3>
-
-Assume for instance ProGuard itself has been obfuscated using the following
-extra options, this time without preserving the line number tables:
-<pre>
--printmapping proguard.map
-</pre>
-<p>
-
-A stack trace <code>proguard.trace</code> will then lack line number
-information:
-<pre>
-Exception in thread "main" java.lang.Error: Random exception
- at pro.bY.a(Unknown Source)
- at pro.bO.a(Unknown Source)
- at pro.bj.a(Unknown Source)
- at pro.bY.a(Unknown Source)
- at pro.bj.a(Unknown Source)
- at pro.bN.a(Unknown Source)
- at pro.bY.a(Unknown Source)
- at pro.bY.a(Unknown Source)
- at pro.l.a(Unknown Source)
- at pro.bo.b(Unknown Source)
- at pro.ci.a(Unknown Source)
- at pro.bo.a(Unknown Source)
- at pro.be.a(Unknown Source)
- at pro.bo.a(Unknown Source)
- at pro.be.a(Unknown Source)
- at pro.bg.a(Unknown Source)
- at pro.bY.a(Unknown Source)
- at pro.bh.a(Unknown Source)
- at pro.bg.b(Unknown Source)
- at pro.bY.a(Unknown Source)
- at pro.bg.a(Unknown Source)
- at pro.M.a(Unknown Source)
- at pro.bY.a(Unknown Source)
- at pro.M.a(Unknown Source)
- at pro.bo.a(Unknown Source)
- at pro.bY.a(Unknown Source)
- at pro.bY.a(Unknown Source)
- at pro.P.a(Unknown Source)
- at pro.p.a(Unknown Source)
- at pro.bU.a(Unknown Source)
- at pro.bo.a(Unknown Source)
- at pro.J.a(Unknown Source)
- at pro.I.a(Unknown Source)
- at pro.J.a(Unknown Source)
- at pro.cf.c(Unknown Source)
- at pro.cf.a(Unknown Source)
- at pro.bc.a(Unknown Source)
- at proguard.ProGuard.a(Unknown Source)
- at proguard.ProGuard.c(Unknown Source)
- at proguard.ProGuard.b(Unknown Source)
- at proguard.ProGuard.main(Unknown Source)
-</pre>
-<p>
-
-We can still use the same command to recover the stack trace:
-<pre>
-<b>java -jar retrace.jar proguard.map proguard.trace</b>
-</pre>
-<p>
-
-The output will now give a list of alternative original method names for each
-ambiguous obfuscated method name:
-<pre>
-Exception in thread "main" java.lang.Error: Random exception
- at proguard.shrink.UsageMarker.visitProgramClassFile(Unknown Source)
- visitLibraryClassFile
- visitProgramFieldInfo
- visitProgramMethodInfo
- visitMemberInfo
- visitLibraryFieldInfo
- visitLibraryMethodInfo
- visitIntegerCpInfo
- visitLongCpInfo
- visitFloatCpInfo
- visitDoubleCpInfo
- visitStringCpInfo
- visitUtf8CpInfo
- visitFieldrefCpInfo
- visitInterfaceMethodrefCpInfo
- visitMethodrefCpInfo
- visitClassCpInfo
- visitNameAndTypeCpInfo
- visitUnknownAttrInfo
- visitInnerClassesAttrInfo
- visitConstantValueAttrInfo
- visitExceptionsAttrInfo
- visitCodeAttrInfo
- visitLineNumberTableAttrInfo
- visitLocalVariableTableAttrInfo
- visitSourceFileAttrInfo
- visitDeprecatedAttrInfo
- visitSyntheticAttrInfo
- visitInstruction
- visitCpInstruction
- visitExceptionInfo
- visitInnerClassesInfo
- visitLocalVariableInfo
- markCpEntry
- markAsUnused
- isUsed
- at proguard.classfile.instruction.GenericInstruction.create(Unknown Source)
- isWide
- getLength
- accept
- at proguard.classfile.CodeAttrInfo.getAttribute(Unknown Source)
- getAttrInfoLength
- readInfo
- accept
- instructionsAccept
- exceptionsAccept
- [...]
- at proguard.KeepCommand.executeShrinkingPhase(Unknown Source)
- access$100
- at proguard.KeepCommand.keepField(Unknown Source)
- ensureMultiClassFileVisitorForMembers
- execute
- executeObfuscationPhase
- access$002
- access$000
- access$102
- access$108
- at proguard.CompoundCommand.addCommand(Unknown Source)
- execute
- at proguard.ProGuard.readCommands(Unknown Source)
- obfuscate
- executeCommands
- at proguard.ProGuard.shrink(Unknown Source)
- at proguard.ProGuard.check(Unknown Source)
- execute
- at proguard.ProGuard.main(Unknown Source)
-</pre>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
-
diff --git a/docs/manual/retrace/index.html b/docs/manual/retrace/index.html
deleted file mode 100644
index 26ce11f..0000000
--- a/docs/manual/retrace/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="../style.css">
-<title>ReTrace Manual</title>
-</head>
-<body>
-
-<h2>ReTrace</h2>
-
-<ol>
-<li><a href="introduction.html">Introduction</a></li>
-<li><a href="usage.html">Usage</a></li>
-<li><a href="examples.html">Examples</a></li>
-</ol>
-
-<hr />
-<noscript><div><a target="_top" href="../../index.html" class="button">Show menu</a></div></noscript>
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/retrace/introduction.html b/docs/manual/retrace/introduction.html
deleted file mode 100644
index 9c514a7..0000000
--- a/docs/manual/retrace/introduction.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="../style.css">
-<title>ReTrace Introduction</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../../index.html#manual/retrace/introduction.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../../index.html#manual/retrace/introduction.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Introduction</h2>
-
-<b>ReTrace</b> is a companion tool for <b>ProGuard</b> that 'de-obfuscates'
-stack traces.
-<p>
-When an obfuscated program throws an exception, the resulting stack trace
-typically isn't very informative. Class names and method names have been
-replaced by short meaningless strings. Source file names and line numbers are
-missing altogether. While this may be intentional, it can also be inconvenient
-when debugging problems.
-<p>
-
-<table class="diagram" align="center">
-
-<tr>
-<td rowspan="1" class="lightblock">Original code</td>
-<td class="transparentblock">- <b>ProGuard</b> &rarr;</td>
-<td rowspan="1" class="lightblock">Obfuscated code</td>
-</tr>
-
-<tr>
-<td rowspan="3" class="transparentblock"></td>
-<td class="transparentblock">&darr;</td>
-<td class="transparentblock">&darr;</td>
-</tr>
-
-<tr>
-<td class="whiteblock">Mapping file</td>
-<td class="transparentblock">&darr;</td>
-</tr>
-
-<tr>
-<td class="transparentblock">&darr;</td>
-<td class="transparentblock">&darr;</td>
-</tr>
-
-<tr>
-<td class="whiteblock">Readable stack trace</td>
-<td class="transparentblock">&larr; <b>ReTrace</b> -</td>
-<td class="whiteblock">Obfuscated stack trace</td>
-</tr>
-
-</table>
-<p>
-ReTrace can read an obfuscated stack trace and restore it to what it would
-look like without obfuscation. The restoration is based on the mapping file
-that ProGuard can write out during obfuscation. The mapping file links the
-original class names and class member names to their obfuscated names.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
-
diff --git a/docs/manual/retrace/usage.html b/docs/manual/retrace/usage.html
deleted file mode 100644
index 6964277..0000000
--- a/docs/manual/retrace/usage.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="../style.css">
-<title>ReTrace Usage</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../../index.html#manual/retrace/usage.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../../index.html#manual/retrace/usage.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Usage</h2>
-
-You can find the ReTrace jar in the <code>lib</code> directory of the
-ProGuard distribution. To run ReTrace, just type:
-<p>
-<p class="code">
-<code><b>java -jar retrace.jar </b></code>[<i>options...</i>]
- <i>mapping_file</i> [<i>stacktrace_file</i>]
-</p>
-Alternatively, the <code>bin</code> directory contains some short Linux and
-Windows scripts containing this command. These are the arguments:
-
-<dl>
-<dt><i>mapping_file</i></dt>
-
-<dd>Specifies the name of the mapping file, produced by ProGuard with the
- option
- "<a href="../usage.html#printmapping"><code>-printmapping</code></a> <i>mapping_file</i>",
- while obfuscating the application that produced the stack trace.</dd>
-
-<dt><i>stacktrace_file</i></dt>
-
-<dd>Optionally specifies the name of the file containing the stack trace. If
- no file is specified, a stack trace is read from the standard input. Blank
- lines and unrecognized lines are ignored, as far as possible.</dd>
-</dl>
-
-The following options are supported:
-<dl>
-<dt><code><b>-verbose</b></code></dt>
-
-<dd>Specifies to print out more informative stack traces that include not only
- method names, but also method return types and arguments.</dd>
-
-<dt><code><b>-regex</b></code> <i>regular_expression</i></dt>
-
-<dd>Specifies the regular expression that is used to parse the lines in the
- stack trace. Specifying a different regular expression allows to
- de-obfuscate more general types of input than just stack traces. The
- default is suitable for stack traces produced by most JVMs:
- <pre>
- (?:.*?\bat\s+%c\.%m\s*\(.*?(?::%l)?\)\s*)|(?:(?:.*?[:"]\s+)?%c(?::.*)?)
- </pre>
- The regular expression is a Java regular expression (cfr. the documentation
- of <code>java.util.regex.Pattern</code>), with a few additional wildcards:
- <table cellspacing="10">
- <tr><td valign="top"><code><b>%c</b></code></td>
- <td>matches a class name (e.g.
- "<code>myapplication.MyClass</code>").</td></tr>
- <tr><td valign="top"><code><b>%C</b></code></td>
- <td>matches a class name with slashes (e.g.
- "<code>myapplication/MyClass</code>").</td></tr>
- <tr><td valign="top"><code><b>%t</b></code></td>
- <td>matches a field type or method return type (e.g.
- "<code>myapplication.MyClass[]</code>").</td></tr>
- <tr><td valign="top"><code><b>%f</b></code></td>
- <td>matches a field name (e.g.
- "<code>myField</code>").</td></tr>
- <tr><td valign="top"><code><b>%m</b></code></td>
- <td>matches a method name (e.g.
- "<code>myMethod</code>").</td></tr>
- <tr><td valign="top"><code><b>%a</b></code></td>
- <td>matches a list of method arguments (e.g.
- "<code>boolean,int</code>").</td></tr>
- <tr><td valign="top"><code><b>%l</b></code></td>
- <td>matches a line number inside a method (e.g.
- "<code>123</code>").</td></tr>
- </table>
- Elements that match these wildcards are de-obfuscated, when possible. Note
- that regular expressions must not contain any capturing groups. Use
- non-capturing groups instead: <code>(?:</code>...<code>)</code>
- </dd>
-</dl>
-
-The restored stack trace is printed to the standard output. The completeness
-of the restored stack trace depends on the presence of line number tables in
-the obfuscated class files:
-
-<ul>
-<li>If all line numbers have been preserved while obfuscating the application,
- ReTrace will be able to restore the stack trace completely.</li>
-
-<li>If the line numbers have been removed, mapping obfuscated method names
- back to their original names has become ambiguous. Retrace will list all
- possible original method names for each line in the stack trace. The user
- can then try to deduce the actual stack trace manually, based on the logic
- of the program.</li>
-
-</ul>
-<p>
-
-Preserving line number tables is explained in detail in this <a
-href="../examples.html#stacktrace">example</a> in the ProGuard User Manual.
-<p>
-
-Unobfuscated elements and obfuscated elements for which no mapping is available
-will be left unchanged.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
-
diff --git a/docs/manual/sections.html b/docs/manual/sections.html
deleted file mode 100644
index 1a6693d..0000000
--- a/docs/manual/sections.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-script-type" content="text/javascript">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="../style.css">
-<title>Sections</title>
-</head>
-<body class="navigation">
-
-<ul class="navigation">
-<li><a href="../sections.html">&lt;&lt; Main menu</a></li>
-
-<li class="title">ProGuard Manual</li>
-<li><a target="main" href="introduction.html">Introduction</a></li>
-<li><a target="main" href="usage.html">Usage</a></li>
-<li><a target="main" href="limitations.html">Limitations</a></li>
-<li><a target="main" href="examples.html">Examples</a></li>
-<li><a target="main" href="troubleshooting.html">Troubleshooting</a></li>
-<li><a target="main" href="refcard.html">Ref Card</a></li>
-<li><a target="main" href="gui.html">GUI</a></li>
-<li><a target="main" href="ant.html">Ant Task</a></li>
-<li><a target="main" href="gradle.html">Gradle Task</a></li>
-<li><a target="main" href="wtk.html">JME WTK</a></li>
-
-<li class="title">ReTrace Manual</li>
-<li><a target="main" href="retrace/introduction.html">Introduction</a></li>
-<li><a target="main" href="retrace/usage.html">Usage</a></li>
-<li><a target="main" href="retrace/examples.html">Examples</a></li>
-</ul>
-
-<p>
-<center>
-<small>More Android code protection:</small>
-<p>
-<a href="http://www.saikoa.com/dexguard" target="_top">
-<img src="../dexguard.png" width="88" height="55" alt="DexGuard" /></a>
-
-<p>
-<small>With support of</small>
-<p>
-
-<a href="http://www.saikoa.com/" target="_top">
-<img src="../saikoalogo.png" width="88" height="19" alt="Saikoa" /></a>
-
-<p>
-<a href="http://sourceforge.net/projects/proguard/" target="other">
-<img src="../sflogo.png" width="88" height="31" alt="SourceForge" /></a>
-
-</center>
-
-</body>
-</html>
diff --git a/docs/manual/style.css b/docs/manual/style.css
deleted file mode 100644
index 6a59990..0000000
--- a/docs/manual/style.css
+++ /dev/null
@@ -1,139 +0,0 @@
-@charset "iso-8859-1";
-
-/* Global settings. */
-
-body
-{
- background: #FFFFFF;
-}
-
-h1
-{
- text-align: center;
-}
-
-h2
-{
- background: #EEEEFF;
- padding: 10px;
-}
-
-dt
-{
- padding: 6px;
-}
-
-dt div
-{
- color: grey;
- float: right;
-}
-
-dd
-{
- padding: 6px;
-}
-
-pre
-{
- padding: 10px;
- background: #E0E0E0;
-}
-
-.spacious li
-{
- padding: 8px;
-}
-
-.shifted li
-{
- margin-left: 50px;
-}
-
-img.float
-{
- float: left;
-}
-
-a
-{
- text-decoration: none;
-}
-
-a.button
-{
- color: #000000;
- text-decoration: none;
- background: #E0E0E0;
- border: 1px outset #FFFFFF;
- float: right;
-}
-
-a.largebutton {
- font-weight: bold;
- color: #000000;
- margin: 0px;
- padding: 10px;
- background: #D0D0D0;
- text-decoration: none;
- border: 1px outset #FFFFFF;
-}
-
-/* Settings for variable width code. */
-
-p.code
-{
- padding: 10px;
- background: #E0E0E0;
-}
-
-
-/* Settings for diagrams. */
-
-table.diagram
-{
- padding: 8px;
- border: none;
- border-spacing: 2px;
-}
-
-td.transparentblock
-{
- text-align: center;
- padding: 10px 0px;
-}
-
-td.whiteblock
-{
- width: 100px;
- text-align: center;
- border: 1px solid #C0C0C0;
- background: #E0E0E0;
- padding: 10px 0px;
-}
-
-td.lightblock
-{
- width: 100px;
- text-align: center;
- border: 1px solid #8888FF;
- background: #BBBBFF;
- padding: 20px 0px;
-}
-
-td.darkblock
-{
- width: 100px;
- text-align: center;
- background: #8888FF;
- padding: 20px 0px;
-}
-
-/* Settings for buttons. */
-
-td.button
-{
- background: #E0E0E0;
- border: 1px outset #FFFFFF;
- font-weight: bold;
-}
diff --git a/docs/manual/troubleshooting.html b/docs/manual/troubleshooting.html
deleted file mode 100644
index 90ed2ab..0000000
--- a/docs/manual/troubleshooting.html
+++ /dev/null
@@ -1,933 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Troubleshooting</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/troubleshooting.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/troubleshooting.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Troubleshooting</h2>
-
-While preparing a configuration for processing your code, you may bump into a
-few problems. The following sections discuss some common issues and solutions:
-
-<h3><a href="#processing">Problems while processing</a></h3>
-<ul>
-<li><a href="#dynamicalclass">Note: can't find dynamically referenced class ...</a></li>
-<li><a href="#dynamicalclasscast">Note: ... calls '(...)Class.forName(variable).newInstance()'</a></li>
-<li><a href="#dynamicalclassmember">Note: ... accesses a field/method '...' dynamically</a></li>
-<li><a href="#attributes">Note: ... calls 'Class.get...', 'Field.get...', or 'Method.get...'</a></li>
-<li><a href="#unknownclass">Note: the configuration refers to the unknown class '...'</a></li>
-<li><a href="#descriptorclass">Note: the configuration keeps the entry point '...', but not the descriptor class '...'</a></li>
-<li><a href="#libraryclass">Note: the configuration explicitly specifies '...' to keep library class '...'</a></li>
-<li><a href="#classmembers">Note: the configuration doesn't specify which class members to keep for class '...'</a></li>
-<li><a href="#nosideeffects">Note: the configuration specifies that none of the methods of class '...' have any side effects</a></li>
-<li><a href="#duplicateclass">Note: duplicate definition of program/library class</a></li>
-<li><a href="#duplicatezipentry">Warning: can't write resource ... Duplicate zip entry</a></li>
-<li><a href="#unresolvedclass">Warning: can't find superclass or interface</a></li>
-<li><a href="#unresolvedclass">Warning: can't find referenced class</a></li>
-<li><a href="#superclass">Error: Can't find any super classes of ... (not even immediate super class ...)</a></li>
-<li><a href="#superclass">Error: Can't find common super class of ... and ...</a></li>
-<li><a href="#unresolvedprogramclassmember">Warning: can't find referenced field/method '...' in program class ...</a></li>
-<li><a href="#unresolvedlibraryclassmember">Warning: can't find referenced field/method '...' in library class ...</a></li>
-<li><a href="#unresolvedenclosingmethod">Warning: can't find enclosing class/method</a></li>
-<li><a href="#dependency">Warning: library class ... depends on program class ...</a></li>
-<li><a href="#unexpectedclass">Warning: class file ... unexpectedly contains class ...</a></li>
-<li><a href="#mappingconflict1">Warning: ... is not being kept as ..., but remapped to ...</a></li>
-<li><a href="#mappingconflict2">Warning: field/method ... can't be mapped to ...</a></li>
-<li><a href="#unsupportedclassversion">Error: Unsupported class version number</a></li>
-<li><a href="#keep">Error: You have to specify '-keep' options</a></li>
-<li><a href="#filename">Error: Expecting class path separator ';' before 'Files\Java\...' (in Windows)</a></li>
-<li><a href="#macosx">Error: Can't read [.../lib/rt.jar] (No such file or directory) (in MacOS X)</a></li>
-<li><a href="#cantread">Error: Can't read ...</a></li>
-<li><a href="#cantwrite">Error: Can't write ...</a></li>
-<li><a href="#startinggui">Internal problem starting the ProGuard GUI (Cannot write XdndAware property) (in Linux)</a></li>
-<li><a href="#outofmemoryerror">OutOfMemoryError</a></li>
-<li><a href="#stackoverflowerror">StackOverflowError</a></li>
-<li><a href="#unexpectederror">Unexpected error</a></li>
-<li><a href="#otherwise">Otherwise...</a></li>
-</ul>
-
-<h3><a href="#afterprocessing">Unexpected observations after processing</a></h3>
-<ul>
-<li><a href="#disappearingclasses">Disappearing classes</a></li>
-<li><a href="#notkept">Classes or class members not being kept</a></li>
-<li><a href="#notobfuscated">Variable names not being obfuscated</a></li>
-</ul>
-
-<h3><a href="#dalvik">Problems while converting to Android Dalvik bytecode</a></h3>
-
-<ul>
-<li><a href="#simexception">SimException: local variable type mismatch</a></li>
-<li><a href="#conversionerror">Conversion to Dalvik format failed with error 1</a></li>
-</ul>
-
-<h3><a href="#preverifying">Problems while preverifying for Java Micro Edition</a></h3>
-
-<ul>
-<li><a href="#invalidclassexception1">InvalidClassException, class loading error, or verification error</a></li>
-</ul>
-
-<h3><a href="#runtime">Problems at run-time</a></h3>
-<ul>
-<li><a href="#stacktraces">Stack traces without class names or line numbers</a></li>
-<li><a href="#noclassdeffounderror">NoClassDefFoundError</a></li>
-<li><a href="#classnotfoundexception">ClassNotFoundException</a></li>
-<li><a href="#nosuchfieldexception">NoSuchFieldException</a></li>
-<li><a href="#nosuchmethodexception">NoSuchMethodException</a></li>
-<li><a href="#missingresourceexception">MissingResourceException or NullPointerException</a></li>
-<li><a href="#disappearingannotations">Disappearing annotations</a></li>
-<li><a href="#invalidjarfile">Invalid or corrupt jarfile</a></li>
-<li><a href="#invalidjarindexexception">InvalidJarIndexException: Invalid index</a></li>
-<li><a href="#invalidclassexception2">InvalidClassException, class loading error, or verification error (in Java Micro Edition)</a></li>
-<li><a href="#nosuchfieldormethod">Error: No Such Field or Method, Error verifying method (in a Java Micro Edition emulator)</a></li>
-<li><a href="#failingmidlets">Failing midlets (on a Java Micro Edition device)</a></li>
-<li><a href="#disappearingloops">Disappearing loops</a></li>
-<li><a href="#securityexception">SecurityException: SHA1 digest error</a></li>
-<li><a href="#classcastexception">ClassCastException: class not an enum</a></li><li><a href="#classcastexception">IllegalArgumentException: class not an enum type</a></li>
-<li><a href="#arraystoreexception">ArrayStoreException: sun.reflect.annotation.EnumConstantNotPresentExceptionProxy</a></li>
-<li><a href="#illegalargumentexception">IllegalArgumentException: methods with same signature but incompatible return types</a></li>
-<li><a href="#compilererror">CompilerError: duplicate addition</a></li>
-<li><a href="#classformaterror1">ClassFormatError: repetitive field name/signature</a></li>
-<li><a href="#classformaterror2">ClassFormatError: Invalid index in LocalVariableTable in class file</a></li>
-<li><a href="#nosuchmethoderror">NoSuchMethodError or AbstractMethodError</a></li>
-<li><a href="#verifyerror">VerifyError</a></li>
-</ul>
-
-
-<h2><a name="processing">Problems while processing</a></h2>
-
-ProGuard may print out some notes and non-fatal warnings:
-
-<dl>
-<dt><a name="dynamicalclass"><b>Note: can't find dynamically referenced class ...</b></a></dt>
-
-<dd>ProGuard can't find a class or interface that your code is accessing by
- means of introspection. You should consider adding the jar that contains
- this class.</dd>
-
-<dt><a name="dynamicalclasscast"><b>Note: ... calls '(...)Class.forName(variable).newInstance()'</b></a></dt>
-
-<dd>Your code uses reflection to dynamically create class instances, with a
- construct like
- "<code>(MyClass)Class.forName(variable).newInstance()</code>". Depending
- on your application, you may need to keep the mentioned classes with an
- option like "<code>-keep class MyClass</code>", or their implementations
- with an option like "<code>-keep class * implements MyClass</code>". You
- can switch off these notes by specifying the
- <a href="usage.html#dontnote"><code>-dontnote</code></a> option.</dd>
-
-<dt><a name="dynamicalclassmember"><b>Note: ... accesses a field/method '...' dynamically</b></a></dt>
-
-<dd>Your code uses reflection to find a fields or a method, with a construct
- like "<code>.getField("myField")</code>". Depending on your application,
- you may need to figure out where the mentioned class members are defined
- and keep them with an option like "<code>-keep class MyClass { MyFieldType
- myField; }</code>". Otherwise, ProGuard might remove or obfuscate the
- class members, since it can't know which ones they are exactly. It does
- list possible candidates, for your information. You can switch off these
- notes by specifying
- the <a href="usage.html#dontnote"><code>-dontnote</code></a> option.</dd>
-
-<dt><a name="attributes"><b>Note: ... calls 'Class.get...'</b>, <b>'Field.get...'</b>, or <b>'Method.get...'</b></a></dt>
-<dd>Your code uses reflection to access metadata from the code, with an
- invocation like "<code>class.getAnnotations()</code>". You then generally
- need to preserve optional <a href="attributes.html">class file
- attributes</a>, which ProGuard removes by default. The attributes contain
- information about annotations, enclosing classes, enclosing methods, etc.
- In a summary in the log, ProGuard provides a suggested configuration,
- like <a href="usage.html#keepattributes"><code>-keepattributes
- *Annotation*</code></a>. If you're sure the attributes are not necessary,
- you can switch off these notes by specifying
- the <a href="usage.html#dontnote"><code>-dontnote</code></a> option.</dd>
-
-<dt><a name="unknownclass"><b>Note: the configuration refers to the unknown class '...'</b></a></dt>
-
-<dd>Your configuration refers to the name of a class that is not present in
- the program jars or library jars. You should check whether the name is
- correct. Notably, you should make sure that you always specify
- fully-qualified names, not forgetting the package names.</dd>
-
-<dt><a name="descriptorclass"><b>Note: the configuration keeps the entry point '...', but not the descriptor class '...'</b></a></dt>
-
-<dd>Your configuration contains a <code>-keep</code> option to preserve the
- given method (or field), but no <code>-keep</code> option for the given
- class that is an argument type or return type in the method's descriptor.
- You may then want to keep the class too. Otherwise, ProGuard will
- obfuscate its name, thus changing the method's signature. The method might
- then become unfindable as an entry point, e.g. if it is part of a public
- API. You can automatically keep such descriptor classes with
- the <code>-keep</code> option modifier
- <a href="usage.html#includedescriptorclasses"><code>includedescriptorclasses</code></a>
- (<code>-keep,includedescriptorclasses</code> ...). You can switch off
- these notes by specifying
- the <a href="usage.html#dontnote"><code>-dontnote</code></a> option.</dd>
-
-<dt><a name="libraryclass"><b>Note: the configuration explicitly specifies '...' to keep library class '...'</b></a></dt>
-
-<dd>Your configuration contains a <code>-keep</code> option to preserve the
- given library class. However, you don't need to keep any library classes.
- ProGuard always leaves underlying libraries unchanged. You can switch off
- these notes by specifying the
- <a href="usage.html#dontnote"><code>-dontnote</code></a> option.</dd>
-
-<dt><a name="classmembers"><b>Note: the configuration doesn't specify which class members to keep for class '...'</b></a></dt>
-
-<dd>Your configuration contains a
- <a href="usage.html#keepclassmembers"><code>-keepclassmembers</code></a>/<a href="usage.html#keepclasseswithmembers"><code>-keepclasseswithmembers</code></a>
- option to preserve fields or methods in the given class, but it doesn't
- specify which fields or methods. This way, the option simply won't have
- any effect. You probably want to specify one or more fields or methods, as
- usual between curly braces. You can specify all fields or methods with a
- wildcard "<code>*;</code>". You should also consider if you just need the
- more common <a href="usage.html#keep"><code>-keep</code></a> option, which
- preserves all specified classes <i>and</i> class members.
- The <a href="usage.html#keepoverview">overview of all <code>keep</code>
- options</a> can help. You can switch off these notes by specifying
- the <a href="usage.html#dontnote"><code>-dontnote</code></a> option.</dd>
-
-<dt><a name="nosideeffects"><b>Note: the configuration specifies that none of the methods of class '...' have any side effects</b></a></dt>
-
-<dd>Your configuration contains an option
- <a href="usage.html#assumenosideeffects"><code>-assumenosideeffects</code></a>
- to indicate that the specified methods don't have any side effects.
- However, the configuration tries to match <i>all</i> methods, by using a
- wildcard like "<code>*;</code>". This includes methods
- from <code>java.lang.Object</code>, such as <code>wait()</code> and
- <code>notify()</code>. Removing invocations of those methods will most
- likely break your application. You should list the methods without side
- effects more conservatively. You can switch off these notes by specifying
- the <a href="usage.html#dontnote"><code>-dontnote</code></a> option.</dd>
-
-<dt><a name="duplicateclass"><b>Note: duplicate definition of program/library class</b></a></dt>
-
-<dd>Your program jars or library jars contain multiple definitions of the
- listed classes. ProGuard continues processing as usual, only considering
- the first definitions. The warning may be an indication of some problem
- though, so it's advisable to remove the duplicates. A convenient way to do
- so is by specifying filters on the input jars or library jars. You can
- switch off these notes by specifying the <a
- href="usage.html#dontnote"><code>-dontnote</code></a> option.
- <p>
- <img class="float" src="android_small.png" width="32" height="32"
- alt="android" /> The standard Android build process automatically
- specifies the input jars for you. There may not be an easy way to filter
- them to remove these notes. You could remove the duplicate classes
- manually from your libraries. You should never explicitly specify the
- input jars yourself (with <code>-injars</code> or
- <code>-libraryjars</code>), since you'll then get duplicate definitions.
- You should also not add libraries to your application that are already
- part of the Android run-time (notably <code>org.w3c.dom</code>,
- <code>org.xml.sax</code>, <code>org.xmlpull.v1</code>,
- <code>org.apache.commons.logging.Log</code>, <code>org.apache.http</code>,
- and <code>org.json</code>). They are possibly inconsistent, and the
- run-time libraries would get precedence anyway.</dd>
-
-<dt><a name="duplicatezipentry"><b>Warning: can't write resource ... Duplicate zip entry</b></a></dt>
-
-<dd>Your input jars contain multiple resource files with the same name.
- ProGuard continues copying the resource files as usual, skipping any files
- with previously used names. Once more, the warning may be an indication of
- some problem though, so it's advisable to remove the duplicates. A
- convenient way to do so is by specifying filters on the input jars. There
- is no option to switch off these warnings.
- <p>
- <img class="float" src="android_small.png" width="32" height="32"
- alt="android" /> The standard Android build process automatically
- specifies the input jars for you. There may not be an easy way to filter
- them to remove these warnings. You could remove the duplicate resource files
- manually from the input and the libraries.</dd>
-
-</dl>
-<p>
-
-ProGuard may terminate when it encounters parsing errors or I/O errors, or
-some more serious warnings:
-
-<dl>
-<dt><a name="unresolvedclass"><b>Warning: can't find superclass or interface</b><br/><b>Warning: can't find referenced class</b></a></dt>
-
-<dd>A class in one of your program jars or library jars is referring to a
- class or interface that is missing from the input. The warning lists both
- the referencing class(es) and the missing referenced class(es). There can
- be a few reasons, with their own solutions:
- <p>
- <ol>
- <li>If the missing class is referenced from your own code, you may have
- forgotten to specify an essential library. Just like when compiling
- all code from scratch, you must specify all libraries that the code is
- referencing, directly or indirectly. If the library should be
- processed and included in the output, you should specify it with
- <a href="usage.html#injars"><code>-injars</code></a>, otherwise you
- should specify it with
- <a href="usage.html#libraryjars"><code>-libraryjars</code></a>.
- <p>
- For example, if ProGuard complains that it can't find a
- <code>java.lang</code> class, you have to make sure that you are
- specifying the run-time library of your platform. For JSE, these are
- typically packaged in <code>lib/rt.jar</code> (<code>vm.jar</code> for
- IBM's JVM, and <code>classes.jar</code> in MacOS X). Other platforms
- like JME and Android have their own run-time libraries.
- The <a href="examples.html">examples section</a> provides more details
- for the various platforms.
- <p>
- If ProGuard still complains that it can't find a
- <code>javax.crypto</code> class, you probably still have to specify
- <code>jce.jar</code>, next to the more common <code>rt.jar</code>.</li>
- <li>If the missing class is referenced from a pre-compiled third-party
- library, and your original code runs fine without it, then the missing
- dependency doesn't seem to hurt. The cleanest solution is to
- <a href="usage.html#filters">filter out</a> the <i>referencing</i>
- class or classes from the input, with a filter like "<code>-libraryjars
- mylibrary.jar(!somepackage/SomeUnusedReferencingClass.class)</code>".
- ProGuard will then skip this class entirely in the input, and it will
- not bump into the problem of its missing reference. However, you may
- then have to filter out other classes that are in turn referencing the
- removed class. In practice, this works best if you can filter out
- entire unused packages at once, with a wildcard filter like
- "<code>-libraryjars
- mylibrary.jar(!someunusedpackage/**)</code>".<p></li>
- <li>If you don't feel like filtering out the problematic classes, you can
- try your luck with the <a
- href="usage.html#ignorewarnings"><code>-ignorewarnings</code></a>
- option, or even
- the <a href="usage.html#dontwarn"><code>-dontwarn</code></a> option.
- Only use these options if you really know what you're doing though.</li>
- </ol>
- <p>
- <img class="float" src="android_small.png" width="32" height="32"
- alt="android" /> The standard Android build process automatically
- specifies the input jars for you. Unfortunately, many pre-compiled
- third-party libraries refer to other libraries that are not actually used
- and therefore not present. This works fine in debug builds, but in release
- builds, ProGuard expects all libraries, so it can perform a proper static
- analysis. For example, if ProGuard complains that it can't find
- a <code>java.awt</code> class, then some library that you are using is
- referring to <code>java.awt</code>. This is a bit shady, since Android
- doesn't have this package at all, but if your application works anyway,
- you can let ProGuard accept it with "<code>-dontwarn java.awt.**</code>",
- for instance.
- <p>
- If the missing class is an Android run-time class, you should make sure
- that you are building against an Android run-time that is sufficiently
- recent. You may need to change the build target in your
- <code>project.properties</code> file or <code>build.gradle</code> file to
- that recent version. You can still specify a different
- <code>minSdkVersion</code> and a different <code>targetSdkVersion</code>
- in your <code>AndroidManifest.xml</code> file.</dd>
-
-<dt><a name="superclass"><b>Error: Can't find any super classes of ... (not even immediate super class ...)</b><br/><b>Error: Can't find common super class of ... and ...</b></a></dt>
-
-<dd>It seems like you tried to avoid the warnings from the previous paragraph
- by specifying
- <a href="usage.html#ignorewarnings"><code>-ignorewarnings</code></a>
- or <a href="usage.html#dontwarn"><code>-dontwarn</code></a>, but it didn't
- work out. ProGuard's optimization step and preverification step really
- need the missing classes to make sense of the code. Preferably, you would
- solve the problem by adding the missing library, as discussed. If you're
- sure the class that references the missing class isn't used either, you
- could also try filtering it out from the input, by adding a filter to the
- corresponding <a href="usage.html#injars"><code>-injars</code></a> option:
- "<code>-injars
- myapplication.jar(!somepackage/SomeUnusedClass.class)</code>". As a final
- solution, you could switch off optimization
- (<a href="usage.html#dontoptimize"><code>-dontoptimize</code></a>) and
- preverification
- (<a href="usage.html#dontpreverify"><code>-dontpreverify</code></a>).</dd>
-
-<dt><a name="unresolvedprogramclassmember"><b>Warning: can't find referenced field/method '...' in program class ...</b></a></dt>
-
-<dd>A program class is referring to a field or a method that is missing from
- another program class. The warning lists both the referencing class and
- the missing referenced class member. Your compiled class files are most
- likely inconsistent. Possibly, some class file didn't get recompiled
- properly, or some class file was left behind after its source file was
- removed. Try removing all compiled class files and rebuilding your
- project.</dd>
-
-<dt><a name="unresolvedlibraryclassmember"><b>Warning: can't find referenced field/method '...' in library class ...</b></a></dt>
-
-<dd>A program class is referring to a field or a method that is missing from a
- library class. The warning lists both the referencing class and the
- missing referenced class member. Your compiled class files are
- inconsistent with the libraries. You may need to recompile the class
- files, or otherwise upgrade the libraries to consistent versions.
- <p>
- <img class="float" src="android_small.png" width="32" height="32"
- alt="android" /> If you're developing for Android and ProGuard complains
- that it can't find a method that is only available in a recent version of
- the Android run-time, you should change the build target in your
- <code>project.properties</code> file or <code>build.gradle</code> file to
- that recent version. You can still specify a different
- <code>minSdkVersion</code> and a different <code>targetSdkVersion</code>
- in your <code>AndroidManifest.xml</code> file.
- <p>
- Alternatively, you may get away with ignoring the inconsistency with the
- options
- <a href="usage.html#ignorewarnings"><code>-ignorewarnings</code></a> or
- even
- <a href="usage.html#dontwarn"><code>-dontwarn</code></a>. For instance, you
- can specify "<code>-dontwarn mypackage.MyInconsistentClass</code>".
- <p>
- Finally, should your program classes reside in the same packages as
- library classes and should they refer to their package visible class
- members, then you should also specify the
- <a href="usage.html#dontskipnonpubliclibraryclassmembers"><code>-dontskipnonpubliclibraryclassmembers</code></a>
- option.</dd>
-
-<dt><a name="unresolvedenclosingmethod"><b>Warning: can't find enclosing class/method</b></a></dt>
-
-<dd>If there are unresolved references to classes that are defined inside
- methods in your input, once more, your compiled class files are most likely
- inconsistent. Possibly, some class file didn't get recompiled properly, or
- some class file was left behind after its source file was removed. Try
- removing all compiled class files and rebuilding your project.</dd>
-
-<dt><a name="dependency"><b>Warning: library class ... depends on program class ...</b></a></dt>
-
-<dd>If any of your library classes depend on your program classes, by
- extending, implementing or just referencing them, your processed code will
- generally be unusable. Program classes can depend on library classes, but
- not the other way around. Program classes are processed, while library
- classes always remain unchanged. It is therefore impossible to adapt
- references from library classes to program classes, for instance if the
- program classes are renamed. You should define a clean separation between
- program code (specified with <a
- href="usage.html#injars"><code>-injars</code></a>) and library code
- (specified with <a
- href="usage.html#libraryjars"><code>-libraryjars</code></a>), and try
- again.
- <p>
- <img class="float" src="android_small.png" width="32" height="32"
- alt="android" /> In Android development, sloppy libraries may contain
- duplicates of classes that are already present in the Android run-time
- (notably <code>org.w3c.dom</code>, <code>org.xml.sax</code>,
- <code>org.xmlpull.v1</code>, <code>org.apache.commons.logging.Log</code>,
- <code>org.apache.http</code>, and <code>org.json</code>). You must remove
- these classes from your libraries, since they are possibly inconsistent,
- and the run-time libraries would get precedence anyway.</dd>
-
-<dt><a name="unexpectedclass"><b>Warning: class file ... unexpectedly contains class ...</b></a></dt>
-
-<dd>The given class file contains a definition for the given class, but the
- directory name of the file doesn't correspond to the package name of the
- class. ProGuard will accept the class definition, but the current
- implementation will not write out the processed version. Please make sure
- your input classes are packaged correctly. Notably, class files that are
- in the <code>WEB-INF/classes</code> directory in a war should be packaged
- in a jar and put in the <code>WEB-INF/lib</code> directory. If you don't
- mind these classes not being written to the output, you can specify the <a
- href="usage.html#ignorewarnings"><code>-ignorewarnings</code></a> option,
- or even the <a href="usage.html#dontwarn"><code>-dontwarn</code></a>
- option.</dd>
-
-<dt><a name="mappingconflict1"><b>Warning: ... is not being kept as ..., but remapped to ...</b></a></dt>
-
-<dd>There is a conflict between a <code>-keep</code> option in the
- configuration, and the mapping file, in the obfuscation step. The given
- class name or class member name can't be kept by its original name, as
- specified in the configuration, but it has to be mapped to the other given
- name, as specified in the mapping file. You should adapt your
- configuration or your mapping file to remove the conflict. Alternatively,
- if you're sure the renaming won't hurt, you can specify the <a
- href="usage.html#ignorewarnings"><code>-ignorewarnings</code></a> option,
- or even the <a href="usage.html#dontwarn"><code>-dontwarn</code></a>
- option.</dd>
-
-<dt><a name="mappingconflict2"><b>Warning: field/method ... can't be mapped to ...</b></a></dt>
-
-<dd>There is a conflict between some new program code and the mapping file, in
- the obfuscation step. The given class member can't be mapped to the given
- name, because it would conflict with another class member that is already
- being mapped to the same name. This can happen if you are performing
- incremental obfuscation, applying an obfuscation mapping file from an
- initial obfuscation step. For instance, some new class may have been added
- that extends two existing classes, introducing a conflict in the name
- space of its class members. If you're sure the class member receiving
- another name than the one specified won't hurt, you can specify the <a
- href="usage.html#ignorewarnings"><code>-ignorewarnings</code></a> option,
- or even the <a href="usage.html#dontwarn"><code>-dontwarn</code></a>
- option. Note that you should always use the <a
- href="usage.html#useuniqueclassmembernames"><code>-useuniqueclassmembernames</code></a>
- option in the initial obfuscation step, in order to reduce the risk of
- conflicts.</dd>
-
-<dt><a name="unsupportedclassversion"><b>Error: Unsupported class version number</b></a></dt>
-
-<dd>You are trying to process class files compiled for a recent version of
- Java that your copy of ProGuard doesn't support yet. You
- should <a href="http://proguard.sourceforge.net/downloads.html">check
- on-line</a> if there is a more recent release.</dd>
-
-<dt><a name="keep"><b>Error: You have to specify '-keep' options</b></a></dt>
-
-<dd>You either forgot to specify <a
- href="usage.html#keep"><code>-keep</code></a> options, or you mistyped the
- class names. ProGuard has to know exactly what you want to keep: an
- application, an applet, a servlet, a midlet,..., or any combination of
- these. Without the proper seed specifications, ProGuard would shrink,
- optimize, or obfuscate all class files away.</dd>
-
-<dt><a name="filename"><b>Error: Expecting class path separator ';' before 'Files\Java\</b>...<b>'</b> (in Windows)</a></dt>
-
-<dd>If the path of your run-time jar contains spaces, like in "Program Files",
- you have to enclose it with single or double quotes, as explained in the
- section on <a href="usage.html#filename">file names</a>. This is actually
- true for all file names containing special characters, on all
- platforms.</dd>
-
-<dt><a name="macosx"><b>Error: Can't read [</b>...<b>/lib/rt.jar] (No such file or directory)</b> (in MacOS X)</a></dt>
-
-<dd>In MacOS X, the run-time classes may be in a different place than on most
- other platforms. You'll then have to adapt your configuration, replacing
- the path <code>&lt;java.home&gt;/lib/rt.jar</code> by
- <code>&lt;java.home&gt;/../Classes/classes.jar</code>.</dd>
-
-<dt><a name="cantread"><b>Error: Can't read ...</b></a></dt>
-
-<dd>ProGuard can't read the specified file or directory. Double-check that the
- name is correct in your configuration, that the file is readable, and that
- it is not corrupt. An additional message "Unexpected end of ZLIB input
- stream" suggests that the file is truncated. You should then make sure
- that the file is complete on disk when ProGuard starts (asynchronous
- copying? unflushed buffer or cache?), and that it is not somehow
- overwritten by ProGuard's own output.</dd>
-
-<dt><a name="cantwrite"><b>Error: Can't write ...</b></a></dt>
-
-<dd>ProGuard can't write the specified file or directory. Double-check that
- the name is correct in your configuration and that the file is
- writable.</dd>
-
-<dt><a name="startinggui"><b>Internal problem starting the ProGuard GUI (Cannot write XdndAware property)</b> (in Linux)</a></dt>
-
-<dd>In Linux, at least with Java 6, the GUI may not start properly, due to
- <a href="http://bugs.sun.com/view_bug.do?bug_id=7027598">Sun
- Bug #7027598</a>. The work-around at this time is to specify the JVM
- option <code>-DsuppressSwingDropSupport=true</code> when running the
- GUI.</dd>
-
-</dl>
-<p>
-
-Should ProGuard crash while processing your application:
-
-<dl>
-<dt><a name="outofmemoryerror"><b>OutOfMemoryError</b></a></dt>
-
-<dd>You can try increasing the heap size of the Java virtual machine, with the
- usual <code>-Xmx</code> option:
- <ul>
- <li>In Java, specify the option as an argument to the JVM: <code>java
- -Xmx1024m</code> ...
- <li>In Ant, set the environment variable <code>ANT_OPTS=-Xmx1024m</code>
- <li>In Gradle, set the environment variable
- <code>GRADLE_OPTS=-Xmx1024m</code>
- <li>In Maven, set the environment variable
- <code>MAVEN_OPTS=-Xmx1024m</code>
- <li>In Eclipse, add the line <code>-Xmx1024m</code> to the file
- <code>eclipse.ini</code> inside your Eclipse install.
- </ul>
- You can also reduce the amount of memory that ProGuard needs by removing
- unnecessary library jars from your configuration, or by filtering out
- unused library packages and classes.</dd>
-
-<dt><a name="stackoverflowerror"><b>StackOverflowError</b></a></dt>
-
-<dd>This error might occur when processing a large code base on Windows
- (surprisingly, not so easily on Linux). In theory, increasing the stack
- size of the Java virtual machine (with the usual <code>-Xss</code> option)
- should help too. In practice however, the <code>-Xss</code> setting
- doesn't have any effect on the main thread, due to <a
- href="http://bugs.sun.com/view_bug.do?bug_id=4362291">Sun Bug
- #4362291</a>. As a result, this solution will only work when running
- ProGuard in a different thread, e.g. from its GUI.</dd>
-
-<dt><a name="unexpectederror"><b>Unexpected error</b></a></dt>
-
-<dd>ProGuard has encountered an unexpected condition, typically in the
- optimization step. It may or may not recover. You should be able to avoid
- it using the <a
- href="usage.html#dontoptimize"><code>-dontoptimize</code></a> option. In
- any case, please report the problem, preferably with the simplest example
- that causes ProGuard to crash.</dd>
-
-<dt><a name="otherwise"><b>Otherwise...</b></a></dt>
-
-<dd>Maybe your class files are corrupt. See if recompiling them and trying
- again helps. If not, please report the problem, preferably with the
- simplest example that causes ProGuard to crash.</dd>
-
-</dl>
-<p>
-
-<h2><a name="afterprocessing">Unexpected observations after processing</a></h2>
-
-If ProGuard seems to run fine, but your processed code doesn't look right,
-there might be a couple of reasons:
-
-<dl>
-<dt><a name="disappearingclasses"><b>Disappearing classes</b></a></dt>
-
-<dd>If you are working on Windows and it looks like some classes have
- disappeared from your output, you should make sure you're not writing your
- output class files to a directory (or unpacking the output jar). On
- platforms with case-insensitive file systems, such as Windows, unpacking
- tools often let class files with similar lower-case and upper-case names
- overwrite each other. If you really can't switch to a different operating
- system, you could consider using ProGuard's <a
- href="usage.html#dontusemixedcaseclassnames"><code>-dontusemixedcaseclassnames</code></a>
- option.
- <p>
- Also, you should make sure your class files are in directories that
- correspond to their package names. ProGuard will read misplaced class
- files, but it will currently not write their processed versions. Notably,
- class files that are in the <code>WEB-INF/classes</code> directory in a
- war should be packaged in a jar and put in the <code>WEB-INF/lib</code>
- directory.</dd>
-
-<dt><a name="notkept"><b>Classes or class members not being kept</b></a></dt>
-
-<dd>If ProGuard is not keeping the right classes or class members, make sure
- you are using fully qualified class names. If the package name of some
- class is missing, ProGuard won't match the elements that you might be
- expecting. It may help to double-check for typos too. You can use the <a
- href="usage.html#printseeds"><code>-printseeds</code></a> option to see
- which elements are being kept exactly.
- <p>
- If you are using marker interfaces to keep other classes, the marker
- interfaces themselves are probably being removed in the shrinking step.
- You should therefore always explicitly keep any marker interfaces, with
- an option like "<code>-keep interface MyMarkerInterface</code>".
- <p>
- Similarly, if you are keeping classes based on annotations, you may have
- to avoid that the annotation classes themselves are removed in the
- shrinking step. You should package the annotation classes as a library, or
- explicitly keep them in your program code with an option like "<code>-keep
- @interface *</code>".</dd>
-
-<dt><a name="notobfuscated"><b>Variable names not being obfuscated</b></a></dt>
-
-<dd>If the names of the local variables and parameters in your obfuscated code
- don't look obfuscated, because they suspiciously resemble the names of
- their types, it's probably because the decompiler that you are using is
- coming up with those names. ProGuard's obfuscation step does remove the
- original names entirely, unless you explicitly keep the
- <code>LocalVariableTable</code> or <code>LocalVariableTypeTable</code>
- attributes.</dd>
-
-</dl>
-
-<h2><a name="dalvik">Problems while converting to Android Dalvik bytecode</a></h2>
-
-If ProGuard seems to run fine, but the dx tool in the Android SDK subsequently
-fails with an error:
-
-<dl>
-<dt><a name="simexception"><b>SimException: local variable type mismatch</b></a></dt>
-
-<dd>This error indicates that ProGuard's optimization step has not been able
- to maintain the correct debug information about local variables. This can
- happen if some code is optimized radically. Possible work-arounds: let the
- java compiler not produce debug information (<code>-g:none</code>), or let
- ProGuard's obfuscation step remove the debug information again
- (by <i>not</i> keeping the attributes <code>LocalVariableTable</code>
- and <code>LocalVariableTypeTable</code>
- with <a href="usage.html#keepattributes"><code>-keepattributes</code></a>),
- or otherwise just disable optimization
- (<a href="usage.html#dontoptimize"><code>-dontoptimize</code></a>).</dd>
-
-<dt><a name="conversionerror"><b>Conversion to Dalvik format failed with error 1</b></a></dt>
-
-<dd>This error may have various causes, but if dx is tripping over some code
- processed by ProGuard, you should make sure that you are using the latest
- version of ProGuard. You can just copy the ProGuard jars
- to <code>android-sdk/tools/proguard/lib</code>. If that doesn't help,
- please report the problem, preferably with the simplest example that still
- brings out the error.</dd>
-
-</dl>
-
-<h2><a name="preverifying">Problems while preverifying for Java Micro Edition</a></h2>
-
-If ProGuard seems to run fine, but the external preverifier subsequently
-produces errors, it's usually for a single reason:
-
-<dl>
-<dt><a name="invalidclassexception1"><b>InvalidClassException</b>, <b>class loading error</b>, or <b>verification error</b></a></dt>
-
-<dd>If you get any such message from the preverifier, you are probably working
- on a platform with a case-insensitive file system, such as Windows. The
- <code>preverify</code> tool always unpacks the jars, so class files with
- similar lower-case and upper-case names overwrite each other. You can use
- ProGuard's <a
- href="usage.html#dontusemixedcaseclassnames"><code>-dontusemixedcaseclassnames</code></a>
- option to work around this problem.
- <p>
- If the above doesn't help, there is probably a bug in the optimization
- step of ProGuard. Make sure you are using the latest version. You should
- be able to work around the problem by using the <a
- href="usage.html#dontoptimize"><code>-dontoptimize</code></a> option. You
- can check the bug database to see if it is a known problem (often with a
- fix). Otherwise, please report it, preferably with the simplest example on
- which you can find ProGuard to fail.</dd>
-
-</dl>
-
-Note that it is no longer necessary to use an external preverifier. With the
-<a href="usage.html#microedition"><code>-microedition</code></a> option,
-ProGuard will preverify the class files for Java Micro Edition.
-<p>
-
-<h2><a name="runtime">Problems at run-time</a></h2>
-
-If ProGuard runs fine, but your processed application doesn't work, there
-might be several reasons:
-
-<dl>
-<dt><a name="stacktraces"><b>Stack traces without class names or line numbers</b></a></dt>
-
-<dd>If your stack traces don't contain any class names or lines numbers,
- even though you are keeping the proper attributes, make sure this debugging
- information is present in your compiled code to start with. Notably the Ant
- javac task has debugging information switched off by default.</dd>
-
-<dt><a name="noclassdeffounderror"><b>NoClassDefFoundError</b></a></dt>
-
-<dd>Your class path is probably incorrect. It should at least contain all
- library jars and, of course, your processed program jar.</dd>
-
-<dt><a name="classnotfoundexception"><b>ClassNotFoundException</b></a></dt>
-
-<dd>Your code is probably calling <code>Class.forName</code>, trying to create
- the missing class dynamically. ProGuard can only detect constant name
- arguments, like <code>Class.forName("mypackage.MyClass")</code>. For
- variable name arguments like <code>Class.forName(someClass)</code>, you
- have to keep all possible classes using the appropriate <a
- href="usage.html#keep"><code>-keep</code></a> option, e.g. "<code>-keep
- class mypackage.MyClass</code>" or "<code>-keep class * implements
- mypackage.MyInterface</code>".</dd>
-
-<dt><a name="nosuchfieldexception"><b>NoSuchFieldException</b></a></dt>
-
-<dd>Your code is probably calling something like
- <code>myClass.getField</code>, trying to find some field dynamically.
- Since ProGuard can't always detect this automatically, you have to keep
- the missing field in using the
- appropriate <a href="usage.html#keep"><code>-keep</code></a> option, e.g.
- "<code>-keepclassmembers class mypackage.MyClass { int myField;
- }</code>".</dd>
-
-<dt><a name="nosuchmethodexception"><b>NoSuchMethodException</b></a></dt>
-
-<dd>Your code is probably calling something like
- <code>myClass.getMethod</code>, trying to find some method dynamically.
- Since ProGuard can't always detect this automatically, you have to keep
- the missing method in using the
- appropriate <a href="usage.html#keep"><code>-keep</code></a> option, e.g.
- "<code>-keepclassmembers class mypackage.MyClass { void myMethod();
- }</code>".
- <p>
- More specifically, if the method reported as missing is
- <code>values</code> or <code>valueOf</code>, you probably have to keep
- some methods related to <a
- href="examples.html#enumerations">enumerations</a>.</dd>
-
-<dt><a name="missingresourceexception"><b>MissingResourceException</b> or <b>NullPointerException</b></a></dt>
-
-<dd>Your processed code may be unable to find some resource files. ProGuard
- simply copies resource files over from the input jars to the output jars.
- Their names and contents remain unchanged, unless you specify the options
- <a
- href="usage.html#adaptresourcefilenames"><code>-adaptresourcefilenames</code></a>
- and/or <a
- href="usage.html#adaptresourcefilecontents"><code>-adaptresourcefilecontents</code></a>.
- <p>
- Furthermore, directory entries in jar files aren't copied, unless you
- specify the option <a
- href="usage.html#keepdirectories"><code>-keepdirectories</code></a>.
- Note that Sun advises against calling <code>Class.getResource()</code> for
- directories (<a href="http://bugs.sun.com/view_bug.do?bug_id=4761949">Sun
- Bug #4761949</a>).</dd>
-
-<dt><a name="disappearingannotations"><b>Disappearing annotations</b></a></dt>
-
-<dd>By default, the obfuscation step removes all annotations. If your
- application relies on annotations to function properly, you should
- explicitly keep them with
- <code><a href="usage.html#keepattributes">-keepattributes</a>
- *Annotation*</code>.</dd>
-
-<dt><a name="invalidjarfile"><b>Invalid or corrupt jarfile</b></a></dt>
-
-<dd>You are probably starting your application with the java option
- <code>-jar</code> instead of the option <code>-classpath</code>. The java
- virtual machine returns with this error message if your jar doesn't
- contain a manifest file (<code>META-INF/MANIFEST.MF</code>), if the
- manifest file doesn't specify a main class (<code>Main-Class:</code> ...),
- or if the jar doesn't contain this main class. You should then make sure
- that the input jar contains a valid manifest file to start with, that this
- manifest file is the one that is copied (the first manifest file that is
- encountered), and that the main class is kept in your configuration,</dd>
-
-<dt><a name="invalidjarindexexception"><b>InvalidJarIndexException: Invalid index</b></a></dt>
-
-<dd>At least one of your processed jar files contains an index file
- <code>META-INF/INDEX.LIST</code>, listing all class files in the jar.
- ProGuard by default copies files like these unchanged. ProGuard may however
- remove or rename classes, thus invalidating the file. You should filter the
- index file out of the input
- (<code>-injars in.jar(!META-INF/INDEX.LIST)</code>) or update the file
- after having applied ProGuard (<code>jar -i out.jar</code>).
- </dd>
-
-<dt><a name="invalidclassexception2"><b>InvalidClassException</b>, <b>class loading error</b>, or <b>verification error</b> (in Java Micro Edition)</a></dt>
-
-<dd>If you get such an error in Java Micro Edition, you may have forgotten to
- specify the <a
- href="usage.html#microedition"><code>-microedition</code></a> option, so
- the processed class files are preverified properly.</dd>
-
-<dt><a name="nosuchfieldormethod"><b>Error: No Such Field or Method</b>, <b>Error verifying method</b> (in a Java Micro Edition emulator)</a></dt>
-
-<dd>If you get such a message in a Motorola or Sony Ericsson phone emulator,
- it's because these emulators don't like packageless classes and/or
- overloaded fields and methods. You can work around it by not using the
- options <code><a href="usage.html#repackageclasses">-repackageclasses</a>
- ''</code> and <a
- href="usage.html#overloadaggressively"><code>-overloadaggressively</code></a>.
- If you're using the JME WTK plugin, you can adapt the configuration
- <code>proguard/wtk/default.pro</code> that's inside the
- <code>proguard.jar</code>.</dd>
-
-<dt><a name="failingmidlets"><b>Failing midlets</b> (on a Java Micro Edition device)</a></dt>
-
-<dd>If your midlet runs in an emulator and on some devices, but not on some
- other devices, this is probably due to a bug in the latter devices. For
- some older Motorola and Nokia phones, you might try specifying the <a
- href="usage.html#useuniqueclassmembernames"><code>-useuniqueclassmembernames</code></a>
- option. It avoids overloading class member names, which triggers a bug in
- their java virtual machine.
- <p>
- You might also try using the <a
- href="usage.html#dontusemixedcaseclassnames"><code>-dontusemixedcaseclassnames</code></a>
- option. Even if the midlet has been properly processed and then
- preverified on a case-sensitive file system, the device itself might not
- like the mixed-case class names. Notably, the Nokia N-Gage emulator works
- fine, but the actual device seems to exhibit this problem.</dd>
-
-<dt><a name="disappearingloops"><b>Disappearing loops</b></a></dt>
-
-<dd>If your code contains empty busy-waiting loops, ProGuard's optimization
- step may remove them. More specifically, this happens if a loop
- continuously checks the value of a non-volatile field that is changed in a
- different thread. The specifications of the Java Virtual Machine require
- that you always mark fields that are accessed across different threads
- without further synchronization as <code>volatile</code>. If this is not
- possible for some reason, you'll have to switch off optimization using the
- <a href="usage.html#dontoptimize"><code>-dontoptimize</code></a>
- option.</dd>
-
-<dt><a name="securityexception"><b>SecurityException: SHA1 digest error</b></a></dt>
-
-<dd>You may have forgotten to sign your program jar <i>after</i> having
- processed it with ProGuard.</dd>
-
-<dt><a name="classcastexception"><b>ClassCastException: class not an enum</b>, or <br /><b>IllegalArgumentException: class not an enum type</b></a></dt>
-
-<dd>You should make sure you're preserving the special methods of enumeration
- types, which the run-time environment calls by introspection. The required
- options are shown in the <a
- href="examples.html#enumerations">examples</a>.</dd>
-
-<dt><a name="arraystoreexception"><b>ArrayStoreException: sun.reflect.annotation.EnumConstantNotPresentExceptionProxy</b></a></dt>
-
-<dd>You are probably processing annotations involving enumerations. Again, you
- should make sure you're preserving the special methods of the enumeration
- type, as shown in the examples.</dd>
-
-<dt><a name="illegalargumentexception"><b>IllegalArgumentException: methods with same signature but incompatible return types</b></a></dt>
-
-<dd>You are probably running some code that has been obfuscated
- with the <a
- href="usage.html#overloadaggressively"><code>-overloadaggressively</code></a>
- option. The class <code>java.lang.reflect.Proxy</code> can't handle
- classes that contain methods with the same names and signatures, but
- different return types. Its method <code>newProxyInstance</code> then
- throws this exception. You can avoid the problem by not using the
- option.</dd>
-
-<dt><a name="compilererror"><b>CompilerError: duplicate addition</b></a></dt>
-
-<dd>You are probably compiling or running some code that has been obfuscated
- with the <a
- href="usage.html#overloadaggressively"><code>-overloadaggressively</code></a>
- option. This option triggers a bug in
- <code>sun.tools.java.MethodSet.add</code> in Sun's JDK 1.2.2, which is
- used for (dynamic) compilation. You should then avoid this option.</dd>
-
-<dt><a name="classformaterror1"><b>ClassFormatError: repetitive field name/signature</b></a></dt>
-
-<dd>You are probably processing some code that has been obfuscated before with
- the <a
- href="usage.html#overloadaggressively"><code>-overloadaggressively</code></a>
- option. You should then use the same option again in the second processing
- round.</dd>
-
-<dt><a name="classformaterror2"><b>ClassFormatError: Invalid index in LocalVariableTable in class file</b></a></dt>
-
-<dd>If you are keeping the <code>LocalVariableTable</code> or
- <code>LocalVariableTypeTable</code> attributes, ProGuard's optimizing step
- is sometimes unable to update them consistently. You should then let the
- obfuscation step remove these attributes or disable the optimization
- step.</dd>
-
-<dt><a name="nosuchmethoderror"><b>NoSuchMethodError</b> or <b>AbstractMethodError</b></a></dt>
-
-<dd>You should make sure you're not writing your output class files to a
- directory on a platform with a case-insensitive file system, such as
- Windows. Please refer to the section about <a
- href="#disappearingclasses">disappearing classes</a> for details.
- <p>
- Furthermore, you should check whether you have specified your program jars
- and library jars properly. Program classes can refer to library classes,
- but not the other way around.
- <p>
- If all of this seems ok, perhaps there's a bug in ProGuard (gasp!). If so,
- please report it, preferably with the simplest example on which you can
- find ProGuard to fail.</dd>
-
-<dt><a name="verifyerror"><b>VerifyError</b></a></dt>
-
-<dd>Verification errors when executing a program are almost certainly the
- result of a bug in the optimization step of ProGuard. Make sure you are
- using the latest version. You should be able to work around the problem by
- using the <a href="usage.html#dontoptimize"><code>-dontoptimize</code></a>
- option. You can check the bug database to see if it is a known problem
- (often with a fix). Otherwise, please report it, preferably with the
- simplest example on which ProGuard fails.</dd>
-
-</dl>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/usage.html b/docs/manual/usage.html
deleted file mode 100644
index 3bf94ef..0000000
--- a/docs/manual/usage.html
+++ /dev/null
@@ -1,1271 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Usage</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/usage.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/usage.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Usage</h2>
-
-To run ProGuard, just type:
-<p class="code">
-<code><b>java -jar proguard.jar </b></code><i>options</i> ...
-</p>
-You can find the ProGuard jar in the <code>lib</code> directory of the
-ProGuard distribution. Alternatively, the <code>bin</code> directory contains
-some short Linux and Windows scripts containing this command. Typically, you'll
-put most options in a configuration file (say, <code>myconfig.pro</code>), and
-just call:
-<p class="code">
-<code><b>java -jar proguard.jar @myconfig.pro</b></code>
-</p>
-You can combine command line options and options from configuration files. For
-instance:
-<p class="code">
-<code><b>java -jar proguard.jar @myconfig.pro -verbose</b></code>
-</p>
-<p>
-You can add comments in a configuration file, starting with a
-<code><b>#</b></code> character and continuing until the end of the line.
-<p>
-Extra whitespace between words and delimiters is ignored. File names with
-spaces or special characters should be quoted with single or double quotes.
-<p>
-Options can be grouped arbitrarily in arguments on the command line and in
-lines in configuration files. This means that you can quote arbitrary sections
-of command line options, to avoid shell expansion of special characters, for
-instance.
-<p>
-The order of the options is generally irrelevant. For quick experiments, you
-can abbreviate them to their first unique characters.
-<p>
-
-The sections below provide more details:
-<ul>
-<li><a href="#iooptions">Input/Output Options</a></li>
-<li><a href="#keepoptions">Keep Options</a></li>
-<li><a href="#shrinkingoptions">Shrinking Options</a></li>
-<li><a href="#optimizationoptions">Optimization Options</a></li>
-<li><a href="#obfuscationoptions">Obfuscation Options</a></li>
-<li><a href="#preverificationoptions">Preverification Options</a></li>
-<li><a href="#generaloptions">General Options</a></li>
-<li><a href="#classpath">Class Paths</a></li>
-<li><a href="#filename">File Names</a></li>
-<li><a href="#filefilters">File Filters</a></li>
-<li><a href="#filters">Filters</a></li>
-<li><a href="#keepoverview">Overview of <code>Keep</code> Options</a></li>
-<li><a href="#keepoptionmodifiers">Keep Option Modifiers</a></li>
-<li><a href="#classspecification">Class Specifications</a></li>
-</ul>
-
-<h2><a name="iooptions">Input/Output Options</a></h2>
-
-<dl>
-<dt><a name="at"><code><b>@</b></code></a><a href="#filename"><i>filename</i></a></dt>
-
-<dd>Short for '<a href="#include"><code>-include</code></a>
- <a href="#filename"><i>filename</i></a>'.</dd>
-
-<dt><a name="include"><code><b>-include</b></code></a>
- <a href="#filename"><i>filename</i></a></dt>
-
-<dd>Recursively reads configuration options from the given file
- <i>filename</i>.</dd>
-
-<dt><a name="basedirectory"><code><b>-basedirectory</b></code></a>
- <a href="#filename"><i>directoryname</i></a></dt>
-
-<dd>Specifies the base directory for all subsequent relative file names in
- these configuration arguments or this configuration file.</dd>
-
-<dt><a name="injars"><code><b>-injars</b></code></a>
- <a href="#classpath"><i>class_path</i></a></dt>
-
-<dd>Specifies the input jars (or aars, wars, ears, zips, apks, or directories)
- of the application to be processed. The class files in these jars will be
- processed and written to the output jars. By default, any non-class files
- will be copied without changes. Please be aware of any temporary files
- (e.g. created by IDEs), especially if you are reading your input files
- straight from directories. The entries in the class path can be filtered,
- as explained in the <a href="#filefilters">filters</a> section. For better
- readability, class path entries can be specified using multiple
- <code>-injars</code> options.</dd>
-
-<dt><a name="outjars"><code><b>-outjars</b></code></a>
- <a href="#classpath"><i>class_path</i></a></dt>
-
-<dd>Specifies the names of the output jars (or aars, wars, ears, zips, apks,
- or directories). The processed input of the preceding <code>-injars</code>
- options will be written to the named jars. This allows you to collect the
- contents of groups of input jars into corresponding groups of output jars.
- In addition, the output entries can be filtered, as explained in
- the <a href="#filefilters">filters</a> section. Each processed class file
- or resource file is then written to the first output entry with a matching
- filter, within the group of output jars.
- <p>
- You must avoid letting the output files overwrite any input files. For
- better readability, class path entries can be specified using multiple
- <code>-outjars</code> options. Without any <code>-outjars</code> options,
- no jars will be written.</dd>
-
-<dt><a name="libraryjars"><code><b>-libraryjars</b></code></a>
- <a href="#classpath"><i>class_path</i></a></dt>
-
-<dd>Specifies the library jars (or aars, wars, ears, zips, apks, or
- directories) of the application to be processed. The files in these jars
- will not be included in the output jars. The specified library jars should
- at least contain the class files that are <i>extended</i> by application
- class files. Library class files that are only <i>called</i> needn't be
- present, although their presence can improve the results of the
- optimization step. The entries in the class path can be filtered, as
- explained in the <a href="#filefilters">filters</a> section. For better
- readability, class path entries can be specified using
- multiple <code>-libraryjars</code> options.
- <p>
- Please note that the boot path and the class path set for running ProGuard
- are not considered when looking for library classes. This means that you
- explicitly have to specify the run-time jar that your code will use.
- Although this may seem cumbersome, it allows you to process applications
- targeted at different run-time environments. For example, you can process
- <a href="examples.html#application">J2SE applications</a> as well as <a
- href="examples.html#midlet">JME midlets</a> or <a
- href="examples.html#androidapplication">Android apps</a>, just by
- specifying the appropriate run-time jar.</dd>
-
-<dt><a name="skipnonpubliclibraryclasses"><code><b>-skipnonpubliclibraryclasses</b></code></a></dt>
-
-<dd>Specifies to skip non-public classes while reading library jars, to speed
- up processing and reduce memory usage of ProGuard. By default, ProGuard
- reads non-public and public library classes alike. However, non-public
- classes are often not relevant, if they don't affect the actual program
- code in the input jars. Ignoring them then speeds up ProGuard, without
- affecting the output. Unfortunately, some libraries, including recent JSE
- run-time libraries, contain non-public library classes that are extended
- by public library classes. You then can't use this option. ProGuard will
- print out warnings if it can't find classes due to this option being
- set.</dd>
-
-<dt><a name="dontskipnonpubliclibraryclasses"><code><b>-dontskipnonpubliclibraryclasses</b></code></a></dt>
-
-<dd>Specifies not to ignore non-public library classes. As of version 4.5, this
- is the default setting.</dd>
-
-<dt><a name="dontskipnonpubliclibraryclassmembers"><code><b>-dontskipnonpubliclibraryclassmembers</b></code></a></dt>
-
-<dd>Specifies not to ignore package visible library class members (fields and
- methods). By default, ProGuard skips these class members while parsing
- library classes, as program classes will generally not refer to them.
- Sometimes however, program classes reside in the same packages as library
- classes, and they do refer to their package visible class members. In
- those cases, it can be useful to actually read the class members, in order
- to make sure the processed code remains consistent.</dd>
-
-<dt><a name="keepdirectories"><code><b>-keepdirectories</b></code></a>
- [<i><a href="#filefilters">directory_filter</a></i>]</dt>
-
-<dd>Specifies the directories to be kept in the output jars (or aars, wars,
- ears, zips, apks, or directories). By default, directory entries are
- removed. This reduces the jar size, but it may break your program if the
- code tries to find them with constructs like
- "<code>mypackage.MyClass.class.getResource("")</code>". You'll then want
- to keep the directory corresponding to the package,
- "<code>-keepdirectories mypackage</code>". If the option is specified
- without a filter, all directories are kept. With a filter, only matching
- directories are kept. For instance,
- "<code>-keepdirectories mydirectory</code>" matches the specified
- directory, "<code>-keepdirectories mydirectory/*</code>" matches its
- immediate subdirectories, and
- "<code>-keepdirectories mydirectory/**</code>" matches all of its
- subdirectories.</dd>
-
-<dt><a name="target"><code><b>-target</b></code></a> <i>version</i></dt>
-
-<dd>Specifies the version number to be set in the processed class files. The
- version number can be one of <code>1.0</code>, <code>1.1</code>,
- <code>1.2</code>, <code>1.3</code>, <code>1.4</code>, <code>1.5</code> (or
- just <code>5</code>), <code>1.6</code> (or just <code>6</code>),
- <code>1.7</code> (or just <code>7</code>), or <code>1.8</code> (or
- just <code>8</code>). By default, the version numbers of the class files
- are left unchanged. For example, you may want to
- <a href="examples.html#upgrade">upgrade class files to Java 6</a>, by
- changing their version numbers and having them preverified. You probably
- shouldn't downgrade the version numbers of class files, since the code
- may contain constructs that are not supported in older versions.</dd>
-
-<dt><a name="forceprocessing"><code><b>-forceprocessing</b></code></a></dt>
-
-<dd>Specifies to process the input, even if the output seems up to date. The
- up-to-dateness test is based on a comparison of the date stamps of the
- specified input, output, and configuration files or directories.</dd>
-
-</dl>
-<p>
-
-<h2><a name="keepoptions">Keep Options</a></h2>
-
-<dl>
-<dt><a name="keep"><code><b>-keep</b></code></a>
- [<a href="#keepoptionmodifiers">,<i>modifier</i></a>,...]
- <a href="#classspecification"><i>class_specification</i></a></dt>
-
-<dd>Specifies classes and class members (fields and methods) to be preserved
- as entry points to your code. For example, in order to <a
- href="examples.html#application">keep an application</a>, you can specify
- the main class along with its main method. In order to <a
- href="examples.html#library">process a library</a>, you should specify all
- publicly accessible elements.</dd>
-
-<dt><a name="keepclassmembers"><code><b>-keepclassmembers</b></code></a>
- [<a href="#keepoptionmodifiers">,<i>modifier</i></a>,...]
- <a href="#classspecification"><i>class_specification</i></a></dt>
-
-<dd>Specifies class members to be preserved, if their classes are preserved as
- well. For example, you may want to <a
- href="examples.html#serializable">keep all serialization fields and
- methods</a> of classes that implement the <code>Serializable</code>
- interface.</dd>
-
-<dt><a name="keepclasseswithmembers"><code><b>-keepclasseswithmembers</b></code></a>
- [<a href="#keepoptionmodifiers">,<i>modifier</i></a>,...]
- <a href="#classspecification"><i>class_specification</i></a></dt>
-
-<dd>Specifies classes and class members to be preserved, on the condition that
- all of the specified class members are present. For example, you may want
- to <a href="examples.html#applications">keep all applications</a> that
- have a main method, without having to list them explicitly.</dd>
-
-<dt><a name="keepnames"><code><b>-keepnames</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a></dt>
-
-<dd>Short for <a href="#keep"><code>-keep</code></a>,<a href="#allowshrinking"><code>allowshrinking</code></a>
- <a href="#classspecification"><i>class_specification</i></a>
- <p>
- Specifies classes and class members whose names are to be preserved, if
- they aren't removed in the shrinking phase. For example, you may want to
- <a href="examples.html#serializable">keep all class names</a> of classes
- that implement the <code>Serializable</code> interface, so that the
- processed code remains compatible with any originally serialized classes.
- Classes that aren't used at all can still be removed. Only applicable when
- obfuscating.</dd>
-
-<dt><a name="keepclassmembernames"><code><b>-keepclassmembernames</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a></dt>
-
-<dd>Short for <a href="#keepclassmembers"><code>-keepclassmembers</code></a>,<a href="#allowshrinking"><code>allowshrinking</code></a>
- <a href="#classspecification"><i>class_specification</i></a>
- <p>
- Specifies class members whose names are to be preserved, if they aren't
- removed in the shrinking phase. For example, you may want to preserve the
- name of the synthetic <code>class$</code> methods
- when <a href="examples.html#library">processing a library</a> compiled by
- JDK 1.2 or older, so obfuscators can detect it again when processing an
- application that uses the processed library (although ProGuard itself
- doesn't need this). Only applicable when obfuscating.</dd>
-
-<dt><a name="keepclasseswithmembernames"><code><b>-keepclasseswithmembernames</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a></dt>
-
-<dd>Short for <a href="#keepclasseswithmembers"><code>-keepclasseswithmembers</code></a>,<a href="#allowshrinking"><code>allowshrinking</code></a>
- <a href="#classspecification"><i>class_specification</i></a>
- <p>
- Specifies classes and class members whose names are to be preserved, on
- the condition that all of the specified class members are present after
- the shrinking phase. For example, you may want to <a
- href="examples.html#native">keep all native method names</a> and the names
- of their classes, so that the processed code can still link with the
- native library code. Native methods that aren't used at all can still be
- removed. If a class file is used, but none of its native methods are, its
- name will still be obfuscated. Only applicable when obfuscating.</dd>
-
-<dt><a name="printseeds"><code><b>-printseeds</b></code></a>
- [<a href="#filename"><i>filename</i></a>]</dt>
-
-<dd>Specifies to exhaustively list classes and class members matched by the
- various <code>-keep</code> options. The list is printed to the standard
- output or to the given file. The list can be useful to verify if the
- intended class members are really found, especially if you're using
- wildcards. For example, you may want to list all the <a
- href="examples.html#applications">applications</a> or all the <a
- href="examples.html#applets">applets</a> that you are keeping.</dd>
-
-</dl>
-<p>
-
-<h2><a name="shrinkingoptions">Shrinking Options</a></h2>
-
-<dl>
-<dt><a name="dontshrink"><code><b>-dontshrink</b></code></a></dt>
-
-<dd>Specifies not to shrink the input class files. By default, shrinking is
- applied; all classes and class members are removed, except for the ones
- listed by the various <code>-keep</code> options, and the ones on which
- they depend, directly or indirectly. A shrinking step is also applied
- after each optimization step, since some optimizations may open the
- possibility to remove more classes and class members.</dd>
-
-<dt><a name="printusage"><code><b>-printusage</b></code></a>
- [<a href="#filename"><i>filename</i></a>]</dt>
-
-<dd>Specifies to list dead code of the input class files. The list is printed
- to the standard output or to the given file. For example, you can <a
- href="examples.html#deadcode">list the unused code of an application</a>.
- Only applicable when shrinking.</dd>
-
-<dt><a name="whyareyoukeeping"><code><b>-whyareyoukeeping</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a></dt>
-
-<dd>Specifies to print details on why the given classes and class members are
- being kept in the shrinking step. This can be useful if you are wondering
- why some given element is present in the output. In general, there can be
- many different reasons. This option prints the shortest chain of methods
- to a specified seed or entry point, for each specified class and class
- member. <i>In the current implementation, the shortest chain that is
- printed out may sometimes contain circular deductions -- these do not
- reflect the actual shrinking process.</i> If the <a
- href="#verbose"><code>-verbose</code></a> option if specified, the traces
- include full field and method signatures. Only applicable when
- shrinking.</dd>
-
-</dl>
-<p>
-
-<h2><a name="optimizationoptions">Optimization Options</a></h2>
-
-<dl>
-<dt><a name="dontoptimize"><code><b>-dontoptimize</b></code></a></dt>
-
-<dd>Specifies not to optimize the input class files. By default, optimization
- is enabled; all methods are optimized at a bytecode level.</dd>
-
-<dt><a name="optimizations"><code><b>-optimizations</b></code></a>
- <a href="optimizations.html"><i>optimization_filter</i></a></dt>
-
-<dd>Specifies the optimizations to be enabled and disabled, at a more
- fine-grained level. Only applicable when optimizing. <i>This is an expert
- option.</i></dd>
-
-<dt><a name="optimizationpasses"><code><b>-optimizationpasses</b></code></a> <i>n</i></dt>
-
-<dd>Specifies the number of optimization passes to be performed. By default, a
- single pass is performed. Multiple passes may result in further
- improvements. If no improvements are found after an optimization pass, the
- optimization is ended. Only applicable when optimizing.</dd>
-
-<dt><a name="assumenosideeffects"><code><b>-assumenosideeffects</b></code></a>
- <a href="#classspecification"><i>class_specification</i></a></dt>
-
-<dd>Specifies methods that don't have any side effects (other than maybe
- returning a value). In the optimization step, ProGuard will then remove
- calls to such methods, if it can determine that the return values aren't
- used. ProGuard will analyze your program code to find such methods
- automatically. It will not analyze library code, for which this option can
- therefore be useful. For example, you could specify the method
- <code>System.currentTimeMillis()</code>, so that any idle calls to it will
- be removed. With some care, you can also use the option to
- <a href="examples.html#logging">remove logging code</a>. Note that
- ProGuard applies the option to the entire hierarchy of the specified
- methods. Only applicable when optimizing. In general, making assumptions
- can be dangerous; you can easily break the processed code. <i>Only use
- this option if you know what you're doing!</i></dd>
-
-<dt><a name="allowaccessmodification"><code><b>-allowaccessmodification</b></code></a></dt>
-
-<dd>Specifies that the access modifiers of classes and class members may be
- broadened during processing. This can improve the results of the
- optimization step. For instance, when inlining a public getter, it may be
- necessary to make the accessed field public too. Although Java's binary
- compatibility specifications formally do not require this (cfr. <a href=
- "http://docs.oracle.com/javase/specs/jls/se5.0/html/j3TOC.html"
- >The Java Language Specification, Third Edition</a>, <a href=
- "http://docs.oracle.com/javase/specs/jls/se5.0/html/binaryComp.html#13.4.6"
- >Section 13.4.6</a>), some virtual machines would have problems with the
- processed code otherwise. Only applicable when optimizing (and when
- obfuscating with the <a
- href="#repackageclasses"><code>-repackageclasses</code></a> option).
- <p>
- <i>Counter-indication:</i> you probably shouldn't use this option when
- processing code that is to be used as a library, since classes and class
- members that weren't designed to be public in the API may become
- public.</dd>
-
-<dt><a name="mergeinterfacesaggressively"><code><b>-mergeinterfacesaggressively</b></code></a></dt>
-
-<dd>Specifies that interfaces may be merged, even if their implementing
- classes don't implement all interface methods. This can reduce the size of
- the output by reducing the total number of classes. Note that Java's
- binary compatibility specifications allow such constructs (cfr. <a href=
- "http://docs.oracle.com/javase/specs/jls/se5.0/html/j3TOC.html"
- >The Java Language Specification, Third Edition</a>, <a href=
- "http://docs.oracle.com/javase/specs/jls/se5.0/html/binaryComp.html#13.5.3"
- >Section 13.5.3</a>), even if they are not allowed in the Java language
- (cfr. <a href=
- "http://docs.oracle.com/javase/specs/jls/se5.0/html/j3TOC.html"
- >The Java Language Specification, Third Edition</a>, <a href=
- "http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.1.4"
- >Section 8.1.4</a>). Only applicable when optimizing.
- <p>
- <i>Counter-indication:</i> setting this option can reduce the performance
- of the processed code on some JVMs, since advanced just-in-time
- compilation tends to favor more interfaces with fewer implementing
- classes. Worse, some JVMs may not be able to handle the resulting code.
- Notably:
- <ul>
- <li>Sun's JRE 1.3 may throw an <code>InternalError</code> when
- encountering more than 256 <i>Miranda</i> methods (interface methods
- without implementations) in a class.</li>
- </ul></dd>
-
-</dl>
-<p>
-
-<h2><a name="obfuscationoptions">Obfuscation Options</a></h2>
-
-<dl>
-<dt><a name="dontobfuscate"><code><b>-dontobfuscate</b></code></a></dt>
-
-<dd>Specifies not to obfuscate the input class files. By default, obfuscation
- is applied; classes and class members receive new short random names,
- except for the ones listed by the various <code>-keep</code> options.
- Internal attributes that are useful for debugging, such as source files
- names, variable names, and line numbers are removed.</dd>
-
-<dt><a name="printmapping"><code><b>-printmapping</b></code></a>
- [<a href="#filename"><i>filename</i></a>]</dt>
-
-<dd>Specifies to print the mapping from old names to new names for classes and
- class members that have been renamed. The mapping is printed to the
- standard output or to the given file. For example, it is required for
- subsequent <a href="examples.html#incremental">incremental
- obfuscation</a>, or if you ever want to make sense again of <a
- href="examples.html#stacktrace">obfuscated stack traces</a>. Only
- applicable when obfuscating.</dd>
-
-<dt><a name="applymapping"><code><b>-applymapping</b></code></a>
- <a href="#filename"><i>filename</i></a></dt>
-
-<dd>Specifies to reuse the given name mapping that was printed out in a
- previous obfuscation run of ProGuard. Classes and class members that are
- listed in the mapping file receive the names specified along with them.
- Classes and class members that are not mentioned receive new names. The
- mapping may refer to input classes as well as library classes. This option
- can be useful for <a href="examples.html#incremental">incremental
- obfuscation</a>, i.e. processing add-ons or small patches to an existing
- piece of code. If the structure of the code changes fundamentally,
- ProGuard may print out warnings that applying a mapping is causing
- conflicts. You may be able to reduce this risk by specifying the option <a
- href="#useuniqueclassmembernames"><code>-useuniqueclassmembernames</code></a>
- in both obfuscation runs. Only a single mapping file is allowed. Only
- applicable when obfuscating.</dd>
-
-<dt><a name="obfuscationdictionary"><code><b>-obfuscationdictionary</b></code></a>
- <a href="#filename"><i>filename</i></a></dt>
-
-<dd>Specifies a text file from which all valid words are used as obfuscated
- field and method names. By default, short names like 'a', 'b', etc. are
- used as obfuscated names. With an obfuscation dictionary, you can specify
- a list of reserved key words, or identifiers with foreign characters, for
- instance. White space, punctuation characters, duplicate words, and
- comments after a <code><b>#</b></code> sign are ignored. Note that an
- obfuscation dictionary hardly improves the obfuscation. Decent compilers
- can automatically replace them, and the effect can fairly simply be undone
- by obfuscating again with simpler names. The most useful application is
- specifying strings that are typically already present in class files (such
- as 'Code'), thus reducing the class file sizes just a little bit more.
- Only applicable when obfuscating.</dd>
-
-<dt><a name="classobfuscationdictionary"><code><b>-classobfuscationdictionary</b></code></a>
- <a href="#filename"><i>filename</i></a></dt>
-
-<dd>Specifies a text file from which all valid words are used as obfuscated
- class names. The obfuscation dictionary is similar to the one of the
- option <a
- href="#obfuscationdictionary"><code>-obfuscationdictionary</code></a>.
- Only applicable when obfuscating.</dd>
-
-<dt><a name="packageobfuscationdictionary"><code><b>-packageobfuscationdictionary</b></code></a>
- <a href="#filename"><i>filename</i></a></dt>
-
-<dd>Specifies a text file from which all valid words are used as obfuscated
- package names. The obfuscation dictionary is similar to the one of the
- option <a
- href="#obfuscationdictionary"><code>-obfuscationdictionary</code></a>.
- Only applicable when obfuscating.</dd>
-
-<dt><a name="overloadaggressively"><code><b>-overloadaggressively</b></code></a></dt>
-
-<dd>Specifies to apply aggressive overloading while obfuscating. Multiple
- fields and methods can then get the same names, as long as their arguments
- and return types are different, as required by Java bytecode (not just
- their arguments, as required by the Java language). This option can make
- the processed code even smaller (and less comprehensible). Only applicable
- when obfuscating.
- <p>
- <i>Counter-indication:</i> the resulting class files fall within the Java
- bytecode specification (cfr. <a href=
- "http://docs.oracle.com/javase/specs/jvms/se5.0/html/VMSpecTOC.doc.html"
- >The Java Virtual Machine Specification, Second Edition</a>, first
- paragraphs of <a href=
- "http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#2877"
- >Section 4.5</a> and <a href=
- "http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#1513"
- >Section 4.6</a>), even though this kind of overloading is not allowed in
- the Java language (cfr. <a href=
- "http://docs.oracle.com/javase/specs/jls/se5.0/html/j3TOC.html"
- >The Java Language Specification, Third Edition</a>, <a href=
- "http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.3"
- >Section 8.3</a> and <a href=
- "http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.4.5"
- >Section 8.4.5</a>). Still, some tools have problems with it. Notably:
- <ul>
- <li>Sun's JDK 1.2.2 <code>javac</code> compiler produces an exception when
- compiling with such a library (cfr. <a href=
- "http://bugs.sun.com/view_bug.do?bug_id=4216736">Bug #4216736</a>).
- You probably shouldn't use this option for processing libraries.</li>
- <li>Sun's JRE 1.4 and later fail to serialize objects with overloaded
- primitive fields.</li>
- <li>Sun's JRE 1.5 <code>pack200</code> tool reportedly has problems with
- overloaded class members.</li>
- <li>The class <code>java.lang.reflect.Proxy</code> can't handle overloaded
- methods.</li>
- <li>Google's Dalvik VM can't handle overloaded static fields.</li>
- </ul></dd>
-
-<dt><a name="useuniqueclassmembernames"><code><b>-useuniqueclassmembernames</b></code></a></dt>
-
-<dd>Specifies to assign the same obfuscated names to class members that have
- the same names, and different obfuscated names to class members that have
- different names (for each given class member signature). Without the
- option, more class members can be mapped to the same short names like 'a',
- 'b', etc. The option therefore increases the size of the resulting code
- slightly, but it ensures that the saved obfuscation name mapping can
- always be respected in subsequent incremental obfuscation steps.
- <p>
- For instance, consider two distinct interfaces containing methods with the
- same name and signature. Without this option, these methods may get
- different obfuscated names in a first obfuscation step. If a patch is then
- added containing a class that implements both interfaces, ProGuard will
- have to enforce the same method name for both methods in an incremental
- obfuscation step. The original obfuscated code is changed, in order to
- keep the resulting code consistent. With this option <i>in the initial
- obfuscation step</i>, such renaming will never be necessary.
- <p>
- This option is only applicable when obfuscating. In fact, if you are
- planning on performing incremental obfuscation, you probably want to avoid
- shrinking and optimization altogether, since these steps could remove or
- modify parts of your code that are essential for later additions.</dd>
-
-<dt><a name="dontusemixedcaseclassnames"><code><b>-dontusemixedcaseclassnames</b></code></a></dt>
-
-<dd>Specifies not to generate mixed-case class names while obfuscating. By
- default, obfuscated class names can contain a mix of upper-case characters
- and lower-case characters. This creates perfectly acceptable and usable
- jars. Only if a jar is unpacked on a platform with a case-insensitive
- filing system (say, Windows), the unpacking tool may let similarly named
- class files overwrite each other. Code that self-destructs when it's
- unpacked! Developers who really want to unpack their jars on Windows can
- use this option to switch off this behavior. Obfuscated jars will become
- slightly larger as a result. Only applicable when obfuscating.</dd>
-
-<dt><a name="keeppackagenames"><code><b>-keeppackagenames</b></code></a>
- [<i><a href="#filters">package_filter</a></i>]</dt>
-
-<dd>Specifies not to obfuscate the given package names. The optional filter is
- a comma-separated list of package names. Package names can contain
- <b>?</b>, <b>*</b>, and <b>**</b> wildcards, and they can be preceded by
- the <b>!</b> negator. Only applicable when obfuscating.</dd>
-
-<dt><a name="flattenpackagehierarchy"><code><b>-flattenpackagehierarchy</b></code></a>
- [<i>package_name</i>]</dt>
-
-<dd>Specifies to repackage all packages that are renamed, by moving them into
- the single given parent package. Without argument or with an empty string
- (''), the packages are moved into the root package. This option is one
- example of further <a href="examples.html#repackaging">obfuscating package
- names</a>. It can make the processed code smaller and less comprehensible.
- Only applicable when obfuscating.</dd>
-
-<dt><a name="repackageclasses"><code><b>-repackageclasses</b></code></a>
- [<i>package_name</i>]</dt>
-
-<dd>Specifies to repackage all class files that are renamed, by moving them
- into the single given package. Without argument or with an empty string
- (''), the package is removed completely. This option overrides the
- <a
- href="#flattenpackagehierarchy"><code>-flattenpackagehierarchy</code></a>
- option. It is another example of further <a
- href="examples.html#repackaging">obfuscating package names</a>. It can
- make the processed code even smaller and less comprehensible. Its
- deprecated name is <code>-defaultpackage</code>. Only applicable when
- obfuscating.
- <p>
- <i>Counter-indication:</i> classes that look for resource files in their
- package directories will no longer work properly if they are moved
- elsewhere. When in doubt, just leave the packaging untouched by not using
- this option.</dd>
-
-<dt><a name="keepattributes"><code><b>-keepattributes</b></code></a>
- [<i><a href="attributes.html">attribute_filter</a></i>]</dt>
-
-<dd>Specifies any optional attributes to be preserved. The attributes can be
- specified with one or more <code>-keepattributes</code> directives. The
- optional filter is a comma-separated list
- of <a href="attributes.html">attribute names</a> that Java virtual
- machines and ProGuard support. Attribute names can
- contain <b>?</b>, <b>*</b>, and <b>**</b> wildcards, and they can be
- preceded by the <b>!</b> negator. For example, you should at least keep
- the <code>Exceptions</code>, <code>InnerClasses</code>, and
- <code>Signature</code> attributes when
- <a href="examples.html#library">processing a library</a>. You should also
- keep the <code>SourceFile</code> and <code>LineNumberTable</code>
- attributes for <a href="examples.html#stacktrace">producing useful
- obfuscated stack traces</a>. Finally, you may want
- to <a href="examples.html#annotations">keep annotations</a> if your code
- depends on them. Only applicable when obfuscating.</dd>
-
-<dt><a name="keepparameternames"><code><b>-keepparameternames</b></code></a></dt>
-
-<dd>Specifies to keep the parameter names and types of methods that are kept.
- This option actually keeps trimmed versions of the debugging attributes
- <code>LocalVariableTable</code> and
- <code>LocalVariableTypeTable</code>. It can be useful when
- <a href="examples.html#library">processing a library</a>. Some IDEs can
- use the information to assist developers who use the library, for example
- with tool tips or autocompletion. Only applicable when obfuscating.</dd>
-
-<dt><a name="renamesourcefileattribute"><code><b>-renamesourcefileattribute</b></code></a>
- [<i>string</i>]</dt>
-
-<dd>Specifies a constant string to be put in the <code>SourceFile</code>
- attributes (and <code>SourceDir</code> attributes) of the class files.
- Note that the attribute has to be present to start with, so it also has to
- be preserved explicitly using the <code>-keepattributes</code> directive.
- For example, you may want to have your processed libraries and
- applications produce <a href="examples.html#stacktrace">useful obfuscated
- stack traces</a>. Only applicable when obfuscating.</dd>
-
-<dt><a name="adaptclassstrings"><code><b>-adaptclassstrings</b></code></a>
- [<i><a href="#filters">class_filter</a></i>]</dt>
-
-<dd>Specifies that string constants that correspond to class names should be
- obfuscated as well. Without a filter, all string constants that correspond
- to class names are adapted. With a filter, only string constants in
- classes that match the filter are adapted. For example, if your code
- contains a large number of hard-coded strings that refer to classes, and
- you prefer not to keep their names, you may want to use this option.
- Primarily applicable when obfuscating, although corresponding classes are
- automatically kept in the shrinking step too.</dd>
-
-<dt><a name="adaptresourcefilenames"><code><b>-adaptresourcefilenames</b></code></a>
- [<i><a href="#filefilters">file_filter</a></i>]</dt>
-
-<dd>Specifies the resource files to be renamed, based on the obfuscated names
- of the corresponding class files (if any). Without a filter, all resource
- files that correspond to class files are renamed. With a filter, only
- matching files are renamed. For example, see <a
- href="examples.html#resourcefiles">processing resource files</a>. Only
- applicable when obfuscating.</dd>
-
-<dt><a name="adaptresourcefilecontents"><code><b>-adaptresourcefilecontents</b></code></a>
- [<i><a href="#filefilters">file_filter</a></i>]</dt>
-
-<dd>Specifies the resource files whose contents are to be updated. Any class
- names mentioned in the resource files are renamed, based on the obfuscated
- names of the corresponding classes (if any). Without a filter, the
- contents of all resource files updated. With a filter, only matching files
- are updated. The resource files are parsed and written using the
- platform's default character set. You can change this default character set
- by setting the environment variable <code>LANG</code> or the Java system
- property <code>file.encoding</code>. For an example,
- see <a href="examples.html#resourcefiles">processing resource files</a>.
- Only applicable when obfuscating.
- <p>
- <i>Caveat:</i> You probably only want to apply this option to text files,
- since parsing and adapting binary files as text files can cause unexpected
- problems. Therefore, make sure that you specify a sufficiently narrow
- filter.</dd>
-
-
-</dl>
-<p>
-
-<h2><a name="preverificationoptions">Preverification Options</a></h2>
-
-<dl>
-<dt><a name="dontpreverify"><code><b>-dontpreverify</b></code></a></dt>
-
-<dd>Specifies not to preverify the processed class files. By default, class
- files are preverified if they are targeted at Java Micro Edition or at
- Java 6 or higher. For Java Micro Edition, preverification is required, so
- you will need to run an external preverifier on the processed code if you
- specify this option. For Java 6, preverification is optional, but as of
- Java 7, it is required. Only when eventually targeting Android, it is not
- necessary, so you can then switch it off to reduce the processing time a
- bit.</dd>
-
-<dt><a name="microedition"><code><b>-microedition</b></code></a></dt>
-
-<dd>Specifies that the processed class files are targeted at Java Micro
- Edition. The preverifier will then add the appropriate StackMap
- attributes, which are different from the default StackMapTable attributes
- for Java Standard Edition. For example, you will need this option if you
- are <a href="examples.html#midlets">processing midlets</a>.</dd>
-
-</dl>
-<p>
-
-<h2><a name="generaloptions">General Options</a></h2>
-
-<dl>
-<dt><a name="verbose"><code><b>-verbose</b></code></a></dt>
-
-<dd>Specifies to write out some more information during processing. If the
- program terminates with an exception, this option will print out the entire
- stack trace, instead of just the exception message.</dd>
-
-<dt><a name="dontnote"><code><b>-dontnote</b></code></a>
- [<i><a href="#filters">class_filter</a></i>]</dt>
-
-<dd>Specifies not to print notes about potential mistakes or omissions in the
- configuration, such as typos in class names or missing options that
- might be useful. The optional filter is a regular expression; ProGuard
- doesn't print notes about classes with matching names.</dd>
-
-<dt><a name="dontwarn"><code><b>-dontwarn</b></code></a>
- [<i><a href="#filters">class_filter</a></i>]</dt>
-
-<dd>Specifies not to warn about unresolved references and other important
- problems at all. The optional filter is a regular expression; ProGuard
- doesn't print warnings about classes with matching names. Ignoring
- warnings can be dangerous. For instance, if the unresolved classes or
- class members are indeed required for processing, the processed code will
- not function properly. <i>Only use this option if you know what you're
- doing!</i></dd>
-
-<dt><a name="ignorewarnings"><code><b>-ignorewarnings</b></code></a></dt>
-
-<dd>Specifies to print any warnings about unresolved references and other
- important problems, but to continue processing in any case. Ignoring
- warnings can be dangerous. For instance, if the unresolved classes or
- class members are indeed required for processing, the processed code will
- not function properly. <i>Only use this option if you know what you're
- doing!</i></dd>
-
-<dt><a name="printconfiguration"><code><b>-printconfiguration</b></code></a>
- [<a href="#filename"><i>filename</i></a>]</dt>
-
-<dd>Specifies to write out the entire configuration that has been parsed, with
- included files and replaced variables. The structure is printed to the
- standard output or to the given file. This can sometimes be useful for
- debugging configurations, or for converting XML configurations into a more
- readable format.</dd>
-
-<dt><a name="dump"><code><b>-dump</b></code></a>
- [<a href="#filename"><i>filename</i></a>]</dt>
-
-<dd>Specifies to write out the internal structure of the class files, after
- any processing. The structure is printed to the standard output or to the
- given file. For example, you may want to <a
- href="examples.html#structure">write out the contents of a given jar
- file</a>, without processing it at all.</dd>
-
-</dl>
-<p>
-
-<h2><a name="classpath">Class Paths</a></h2>
-
-ProGuard accepts a generalization of class paths to specify input files and
-output files. A class path consists of entries, separated by the traditional
-path separator (e.g. '<b>:</b>' on Unix, or '<b>;</b>' on Windows platforms).
-The order of the entries determines their priorities, in case of duplicates.
-<p>
-Each input entry can be:
-<ul>
-<li>A class file or resource file,</li>
-<li>An apk file, containing any of the above,</li>
-<li>A jar file, containing any of the above,</li>
-<li>An aar file, containing any of the above,</li>
-<li>A war file, containing any of the above,</li>
-<li>An ear file, containing any of the above,</li>
-<li>A zip file, containing any of the above,</li>
-<li>A directory (structure), containing any of the above.</li>
-</ul>
-<p>
-The paths of directly specified class files and resource files is ignored, so
-class files should generally be part of a jar file, an aar file, a war file,
-an ear file, a zip file, or a directory. In addition, the paths of class files
-should not have any additional directory prefixes inside the archives or
-directories.
-
-<p>
-Each output entry can be:
-<ul>
-<li>An apk file, in which all class files and resource files will be
- collected.</li>
-<li>A jar file, in which any and all of the above will be collected,</li>
-<li>An aar file, in which any and all of the above will be collected,</li>
-<li>A war file, in which any and all of the above will be collected,</li>
-<li>An ear file, in which any and all of the above will be collected,</li>
-<li>A zip file, in which any and all of the above will be collected,</li>
-<li>A directory, in which any and all of the above will be collected.</li>
-</ul>
-<p>
-When writing output entries, ProGuard will generally package the results in a
-sensible way, reconstructing the input entries as much as required. Writing
-everything to an output directory is the most straightforward option: the
-output directory will contain a complete reconstruction of the input entries.
-The packaging can be almost arbitrarily complex though: you could process an
-entire application, packaged in a zip file along with its documentation,
-writing it out as a zip file again. The Examples section shows a few ways
-to <a href="examples.html#restructuring">restructure output archives</a>.
-<p>
-Files and directories can be specified as discussed in the section on <a
-href="#filename">file names</a> below.
-<p>
-In addition, ProGuard provides the possibility to filter the class path
-entries and their contents, based on their full relative file names. Each
-class path entry can be followed by up to 7 types of <a
-href="#filefilters">file filters</a> between parentheses, separated by
-semi-colons:
-<ul>
-<li>A filter for all aar names that are encountered,</li>
-<li>A filter for all apk names that are encountered,</li>
-<li>A filter for all zip names that are encountered,</li>
-<li>A filter for all ear names that are encountered,</li>
-<li>A filter for all war names that are encountered,</li>
-<li>A filter for all jar names that are encountered,</li>
-<li>A filter for all class file names and resource file names that are
- encountered.</li>
-</ul>
-<p>
-If fewer than 7 filters are specified, they are assumed to be the latter
-filters. Any empty filters are ignored. More formally, a filtered class path
-entry looks like this:
-<pre>
-<i>classpathentry</i><b>(</b>[[[[[[<i>aarfilter</i><b>;</b>]<i>apkfilter</i><b>;</b>]<i>zipfilter</i><b>;</b>]<i>earfilter</i><b>;</b>]<i>warfilter</i><b>;</b>]<i>jarfilter</i><b>;</b>]<i>filefilter</i><b>)</b>
-</pre>
-<p>
-Square brackets "[]" mean that their contents are optional.
-<p>
-For example, "<code>rt.jar(java/**.class,javax/**.class)</code>" matches all
-class files in the <code>java</code> and <code>javax</code> directories inside
-the <code>rt</code> jar.
-<p>
-For example, "<code>input.jar(!**.gif,images/**)</code>" matches all files in
-the <code>images</code> directory inside the <code>input</code> jar, except
-gif files.
-<p>
-The different filters are applied to all corresponding file types, irrespective
-of their nesting levels in the input; they are orthogonal.
-<p>
-For example,
-"<code>input.war(lib/**.jar,support/**.jar;**.class,**.gif)</code>" only
-considers jar files in the <code>lib</code> and <code>support</code>
-directories in the <code>input</code> war, not any other jar files. It then
-matches all class files and gif files that are encountered.
-<p>
-The filters allow for an almost infinite number of packaging and repackaging
-possibilities. The Examples section provides a few more examples
-for <a href="examples.html#filtering">filtering input and output</a>.
-<p>
-
-<h2><a name="filename">File Names</a></h2>
-
-ProGuard accepts absolute paths and relative paths for the various file names
-and directory names. A relative path is interpreted as follows:
-<ul>
-<li>relative to the base directory, if set, or otherwise</li>
-<li>relative to the configuration file in which it is specified, if any, or
- otherwise</li>
-<li>relative to the working directory.</li>
-</ul>
-<p>
-The names can contain Java system properties (or Ant properties, when using
-Ant), delimited by angular brackets, '<b>&lt;</b>' and '<b>&gt;</b>'. The
-properties are automatically replaced by their corresponding values.
-<p>
-For example, <code>&lt;java.home&gt;/lib/rt.jar</code> is automatically
-expanded to something like <code>/usr/local/java/jdk/jre/lib/rt.jar</code>.
-Similarly, <code>&lt;user.home&gt;</code> is expanded to the user's home
-directory, and <code>&lt;user.dir&gt;</code> is expanded to the current
-working directory.
-<p>
-Names with special characters like spaces and parentheses must be quoted with
-single or double quotes. Each file name in a list of names has to be quoted
-individually. Note that the quotes themselves may need to be escaped when used
-on the command line, to avoid them being gobbled by the shell.
-<p>
-For example, on the command line, you could use an option like <code>'-injars
-"my program.jar":"/your directory/your program.jar"'</code>.
-<p>
-
-<h2><a name="filefilters">File Filters</a></h2>
-
-Like general <a href="#filters">filters</a>, a file filter is a
-comma-separated list of file names that can contain wildcards. Only files with
-matching file names are read (in the case of input jars), or written (in the
-case of output jars). The following wildcards are supported:
-
-<table cellspacing="10">
-<tr><td valign="top"><code><b>?</b></code></td>
- <td>matches any single character in a file name.</td></tr>
-<tr><td valign="top"><code><b>*</b></code></td>
- <td>matches any part of a filename not containing the directory
- separator.</td></tr>
-<tr><td valign="top"><code><b>**</b></code></td>
- <td>matches any part of a filename, possibly containing any number of
- directory separators.</td></tr>
-</table>
-
-For example, "<code>java/**.class,javax/**.class</code>" matches all
-class files in the <code>java</code> and <code>javax</code>.
-<p>
-
-Furthermore, a file name can be preceded by an exclamation mark '<b>!</b>' to
-<i>exclude</i> the file name from further attempts to match with
-<i>subsequent</i> file names.
-<p>
-For example, "<code>!**.gif,images/**</code>" matches all files in the
-<code>images</code> directory, except gif files.
-<p>
-The Examples section provides a few more examples for <a
-href="examples.html#filtering">filtering input and output</a>.
-
-<h2><a name="filters">Filters</a></h2>
-
-ProGuard offers options with filters for many different aspects of the
-configuration: names of files, directories, classes, packages, attributes,
-optimizations, etc.
-<p>
-A filter is a list of comma-separated names that can contain wildcards. Only
-names that match an item on the list pass the filter. The supported wildcards
-depend on the type of names for which the filter is being used, but the
-following wildcards are typical:
-
-<table cellspacing="10">
-<tr><td valign="top"><code><b>?</b></code></td>
- <td>matches any single character in a name.</td></tr>
-<tr><td valign="top"><code><b>*</b></code></td>
- <td>matches any part of a name not containing the package separator or
- directory separator.</td></tr>
-<tr><td valign="top"><code><b>**</b></code></td>
- <td>matches any part of a name, possibly containing any number of
- package separators or directory separators.</td></tr>
-</table>
-
-For example, "<code>foo,*bar</code>" matches the name <code>foo</code> and
-all names ending with <code>bar</code>.
-<p>
-
-Furthermore, a name can be preceded by a negating exclamation mark '<b>!</b>'
-to <i>exclude</i> the name from further attempts to match
-with <i>subsequent</i> names. So, if a name matches an item in the filter, it
-is accepted or rejected right away, depending on whether the item has a
-negator. If the name doesn't match the item, it is tested against the next
-item, and so on. It if doesn't match any items, it is accepted or rejected,
-depending on the whether the last item has a negator or not.
-<p>
-For example, "<code>!foobar,*bar</code>" matches all names ending with
-<code>bar</code>, except <code>foobar</code>.
-<p>
-
-<h2><a name="keepoverview">Overview of <code>Keep</code> Options</a></h2>
-
-The various <code>-keep</code> options for shrinking and obfuscation may seem
-a bit confusing at first, but there's actually a pattern behind them. The
-following table summarizes how they are related:
-<p>
-
-<table cellpadding="5">
-
-<tr>
-<th>Keep</th>
-<td>From being removed or renamed</td>
-<td>From being renamed</td>
-</tr>
-
-<tr>
-<td>Classes and class members</td>
-<td bgcolor="#E0E0E0"><a href="#keep"><code>-keep</code></a></td>
-<td bgcolor="#E0E0E0"><a href="#keepnames"><code>-keepnames</code></a></td>
-</tr>
-
-<tr>
-<td>Class members only</td>
-<td bgcolor="#E0E0E0"><a href="#keepclassmembers"><code>-keepclassmembers</code></a></td>
-<td bgcolor="#E0E0E0"><a href="#keepclassmembernames"><code>-keepclassmembernames</code></a></td>
-</tr>
-
-<tr>
-<td>Classes and class members, if class members present</td>
-<td bgcolor="#E0E0E0"><a href="#keepclasseswithmembers"><code>-keepclasseswithmembers</code></a></td>
-<td bgcolor="#E0E0E0"><a href="#keepclasseswithmembernames"><code>-keepclasseswithmembernames</code></a></td>
-</tr>
-
-</table>
-<p>
-
-Each of these <code>-keep</code> options is of course followed by a
-<a href="#classspecification">specification</a> of the classes and class
-members (fields and methods) to which it should be applied.
-<p>
-If you're not sure which option you need, you should probably simply use
-<code>-keep</code>. It will make sure the specified classes and class members
-are not removed in the shrinking step, and not renamed in the obfuscation step.
-<p>
-<img class="float" src="attention.gif" width="64" height="64" alt="attention" />
-<ul class="shifted">
-<li>If you specify a class, without class members, ProGuard only preserves the
- class and its parameterless constructor as entry points. It may
- still remove, optimize, or obfuscate its other class members.</li>
-<li>If you specify a method, ProGuard only preserves the method as an entry
- point. Its code may still be optimized and adapted.</li>
-</ul>
-<p>
-
-<h2><a name="keepoptionmodifiers">Keep Option Modifiers</a></h2>
-
-<dl>
-<dt><a name="includedescriptorclasses"><code><b>includedescriptorclasses</b></code></a></dt>
-
-<dd>Specifies that any classes in the type descriptors of the methods and
- fields that the <a href="#keep">-keep</a> option keeps should be kept as
- well. This is typically useful when <a href="examples.html#native">keeping
- native method names</a>, to make sure that the parameter types of native
- methods aren't renamed either. Their signatures then remain completely
- unchanged and compatible with the native libraries.</dd>
-
-<dt><a name="allowshrinking"><code><b>allowshrinking</b></code></a></dt>
-
-<dd>Specifies that the entry points specified in the <a href="#keep">-keep</a>
- option may be shrunk, even if they have to be preserved otherwise. That
- is, the entry points may be removed in the shrinking step, but if they are
- necessary after all, they may not be optimized or obfuscated.</dd>
-
-<dt><a name="allowoptimization"><code><b>allowoptimization</b></code></a></dt>
-
-<dd>Specifies that the entry points specified in the <a href="#keep">-keep</a>
- option may be optimized, even if they have to be preserved otherwise. That
- is, the entry points may be altered in the optimization step, but they may
- not be removed or obfuscated. This modifier is only useful for achieving
- unusual requirements.</dd>
-
-<dt><a name="allowobfuscation"><code><b>allowobfuscation</b></code></a></dt>
-
-<dd>Specifies that the entry points specified in the <a href="#keep">-keep</a>
- option may be obfuscated, even if they have to be preserved otherwise. That
- is, the entry points may be renamed in the obfuscation step, but they may
- not be removed or optimized. This modifier is only useful for achieving
- unusual requirements.</dd>
-
-</dl>
-<p>
-
-<h2><a name="classspecification">Class Specifications</a></h2>
-
-A class specification is a template of classes and class members (fields and
-methods). It is used in the various <code>-keep</code> options and in the
-<code>-assumenosideeffects</code> option. The corresponding option is only
-applied to classes and class members that match the template.
-<p>
-The template was designed to look very Java-like, with some extensions for
-wildcards. To get a feel for the syntax, you should probably look at the <a
-href="examples.html">examples</a>, but this is an attempt at a complete formal
-definition:
-<p>
-
-<pre>
-[<b>@</b><i>annotationtype</i>] [[<b>!</b>]<b>public</b>|<b>final</b>|<b>abstract</b>|<b>@</b> ...] [<b>!</b>]<b>interface</b>|<b>class</b>|<b>enum</b> <i>classname</i>
- [<b>extends</b>|<b>implements</b> [<b>@</b><i>annotationtype</i>] <i>classname</i>]
-[<b>{</b>
- [<b>@</b><i>annotationtype</i>] [[<b>!</b>]<b>public</b>|<b>private</b>|<b>protected</b>|<b>static</b>|<b>volatile</b>|<b>transient</b> ...] <b>&lt;fields&gt;</b> |
- (<i>fieldtype fieldname</i>)<b>;</b>
- [<b>@</b><i>annotationtype</i>] [[<b>!</b>]<b>public</b>|<b>private</b>|<b>protected</b>|<b>static</b>|<b>synchronized</b>|<b>native</b>|<b>abstract</b>|<b>strictfp</b> ...] <b>&lt;methods&gt;</b> |
- <b>&lt;init&gt;(</b><i>argumenttype,...</i><b>)</b> |
- <i>classname</i><b>(</b><i>argumenttype,...</i><b>)</b> |
- (<i>returntype methodname</i><b>(</b><i>argumenttype,...</i><b>)</b>)<b>;</b>
- [<b>@</b><i>annotationtype</i>] [[<b>!</b>]<b>public</b>|<b>private</b>|<b>protected</b>|<b>static</b> ... ] <b>*;</b>
- ...
-<b>}</b>]
-</pre>
-<p>
-Square brackets "[]" mean that their contents are optional. Ellipsis dots
-"..." mean that any number of the preceding items may be specified. A vertical
-bar "|" delimits two alternatives. Non-bold parentheses "()" just group parts
-of the specification that belong together. The indentation tries to clarify
-the intended meaning, but white-space is irrelevant in actual configuration
-files.
-<p>
-<ul class="spacious">
-
-<li>The <code><b>class</b></code> keyword refers to any interface or class.
- The <code><b>interface</b></code> keyword restricts matches to interface
- classes. The <code><b>enum</b></code> keyword restricts matches to
- enumeration classes. Preceding the <code><b>interface</b></code> or
- <code><b>enum</b></code> keywords by a <code><b>!</b></code> restricts
- matches to classes that are not interfaces or enumerations,
- respectively.</li>
-
-<li>Every <i>classname</i> must be fully qualified, e.g.
- <code>java.lang.String</code>. Inner classes are separated by a dollar sign
- "<code>$</code>", e.g. <code>java.lang.Thread$State</code>. Class names
- may be specified as regular
- expressions containing the following wildcards:
-
-<table cellspacing="10">
-
-<tr><td valign="top"><code><b>?</b></code></td>
-
-<td>matches any single character in a class name, but not the package
- separator. For example, "<code>mypackage.Test?</code>" matches
- "<code>mypackage.Test1</code>" and "<code>mypackage.Test2</code>", but not
- "<code>mypackage.Test12</code>".</td></tr>
-
-<tr><td valign="top"><code><b>*</b></code></td>
-
-<td>matches any part of a class name not containing the package separator. For
- example, "<code>mypackage.*Test*</code>" matches
- "<code>mypackage.Test</code>" and
- "<code>mypackage.YourTestApplication</code>", but not
- "<code>mypackage.mysubpackage.MyTest</code>". Or, more generally,
- "<code>mypackage.*</code>" matches all classes in
- "<code>mypackage</code>", but not in its subpackages.</td></tr>
-
-<tr><td valign="top"><code><b>**</b></code></td>
-
-<td>matches any part of a class name, possibly containing any number of
- package separators. For example, "<code>**.Test</code>" matches all
- <code>Test</code> classes in all packages except the root package. Or,
- "<code>mypackage.**</code>" matches all classes in
- "<code>mypackage</code>" and in its subpackages.</td></tr>
-
-</table>
-
- For additional flexibility, class names can actually be comma-separated
- lists of class names, with optional <code><b>!</b></code> negators, just
- like file name filters. This notation doesn't look very Java-like, so it
- should be used with moderation.
- <p>
- For convenience and for backward compatibility, the class name
- <code><b>*</b></code> refers to any class, irrespective of its package.</li>
-
-<li>The <code><b>extends</b></code> and <code><b>implements</b></code>
- specifications are typically used to restrict classes with wildcards. They
- are currently equivalent, specifying that only classes extending or
- implementing the given class qualify. Note that the given class itself is
- not included in this set. If required, it should be specified in a
- separate option.</li>
-
-<li>The <code><b>@</b></code> specifications can be used to restrict classes
- and class members to the ones that are annotated with the specified
- annotation types. An <i>annotationtype</i> is specified just like a
- <i>classname</i>.</li>
-
-<li>Fields and methods are specified much like in Java, except that method
- argument lists don't contain argument names (just like in other tools
- like <code>javadoc</code> and <code>javap</code>). The specifications can
- also contain the following catch-all wildcards:
-
-<table cellspacing="10">
-
-<tr><td valign="top"><code><b>&lt;init&gt;</b></code></td>
-<td>matches any constructor.</td></tr>
-
-<tr><td valign="top"><code><b>&lt;fields&gt;</b></code></td>
-<td>matches any field.</td></tr>
-
-<tr><td valign="top"><code><b>&lt;methods&gt;</b></code></td>
-<td>matches any method.</td></tr>
-
-<tr><td valign="top"><code><b>*</b></code></td>
-<td>matches any field or method.</td></tr>
-
-</table>
-
- Note that the above wildcards don't have return types. Only the
- <code><b>&lt;init&gt;</b></code> wildcard has an argument list.
- <p>
-
- Fields and methods may also be specified using regular expressions. Names
- can contain the following wildcards:
-
-<table cellspacing="10">
-<tr><td valign="top"><code><b>?</b></code></td>
- <td>matches any single character in a method name.</td></tr>
-<tr><td valign="top"><code><b>*</b></code></td>
- <td>matches any part of a method name.</td></tr>
-</table>
-
- Types in descriptors can contain the following wildcards:
-
-<table cellspacing="10">
-<tr><td valign="top"><code><b>%</b></code></td>
- <td>matches any primitive type ("<code>boolean</code>", "<code>int</code>",
- etc, but not "<code>void</code>").</td></tr>
-<tr><td valign="top"><code><b>?</b></code></td>
- <td>matches any single character in a class name.</td></tr>
-<tr><td valign="top"><code><b>*</b></code></td>
- <td>matches any part of a class name not containing the package separator.</td></tr>
-<tr><td valign="top"><code><b>**</b></code></td>
- <td>matches any part of a class name, possibly containing any number of
- package separators.</td></tr>
-<tr><td valign="top"><code><b>***</b></code></td>
- <td>matches any type (primitive or non-primitive, array or
- non-array).</td></tr>
-<tr><td valign="top"><code><b>...</b></code></td>
- <td>matches any number of arguments of any type.</td></tr>
-
-</table>
-
- Note that the <code>?</code>, <code>*</code>, and <code>**</code>
- wildcards will never match primitive types. Furthermore, only the
- <code>***</code> wildcards will match array types of any dimension. For
- example, "<code>** get*()</code>" matches "<code>java.lang.Object
- getObject()</code>", but not "<code>float getFloat()</code>", nor
- "<code>java.lang.Object[] getObjects()</code>".</li>
-
-<li>Constructors can also be specified using their short class names (without
- package) or using their full class names. As in the Java language, the
- constructor specification has an argument list, but no return type.</li>
-
-<li>The class access modifiers and class member access modifiers are typically
- used to restrict wildcarded classes and class members. They specify that
- the corresponding access flags have to be set for the member to match. A
- preceding <code><b>!</b></code> specifies that the corresponding access
- flag should be unset.
- <p>
- Combining multiple flags is allowed (e.g. <code>public static</code>). It
- means that both access flags have to be set (e.g. <code>public</code>
- <i>and</i> <code>static</code>), except when they are conflicting, in
- which case at least one of them has to be set (e.g. at least
- <code>public</code>
- <i>or</i> <code>protected</code>).
- <p>
- ProGuard supports the additional modifiers <code><b>synthetic</b></code>,
- <code><b>bridge</b></code>, and <code><b>varargs</b></code>, which may be
- set by compilers.</li>
-
-</ul>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/manual/wtk.html b/docs/manual/wtk.html
deleted file mode 100644
index 09630f1..0000000
--- a/docs/manual/wtk.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard JME Wireless Toolkit Integration</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="../index.html#manual/wtk.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="../index.html#manual/wtk.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>JME Wireless Toolkit Integration</h2>
-
-<b>ProGuard</b> can be seamlessly integrated in Oracle's Wireless Toolkit (WTK)
-for Java Micro Edition (JME).
-<p>
-
-The WTK already comes with a plug-in for ProGuard. Alternatively, ProGuard
-offers its own plug-in. This latter implementation is recommended, as it more
-up to date and it solves some problems. It is also somewhat more efficient,
-invoking the ProGuard engine directly, instead of writing out a configuration
-file and running ProGuard in a separate virtual machine.
-<p>
-
-In order to integrate this plug-in in the toolkit, you'll have to put the
-following lines in the file
-{j2mewtk.dir}<code>/wtklib/Linux/ktools.properties</code> or
-{j2mewtk.dir}<code>\wtklib\Windows\ktools.properties</code> (whichever is
-applicable).
-<p>
-
-<pre>
-obfuscator.runner.class.name: proguard.wtk.ProGuardObfuscator
-obfuscator.runner.classpath: /usr/local/java/proguard/lib/proguard.jar
-</pre>
-<p>
-
-Please make sure the class path is set correctly for your system.
-<p>
-
-Once ProGuard has been set up, you can apply it to your projects as part of
-the build process. The build process is started from the WTK menu bar:
-<p>
-<center><b>Project -> Package -> Create Obfuscated Package</b></center>
-<p>
-This option will compile, shrink, obfuscate, verify, and install your midlets
-for testing.
-<p>
-Should you ever need to customize your ProGuard configuration for the JME WTK,
-you can adapt the configuration file <code>proguard/wtk/default.pro</code>
-that's inside the <code>proguard.jar</code>.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/proguard.appdata.xml b/docs/proguard.appdata.xml
deleted file mode 100644
index fe04aa7..0000000
--- a/docs/proguard.appdata.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2012-2014 Eric Lafortune <eric@graphics.cornell.edu> -->
-<application>
- <id type="desktop">proguard.desktop</id>
- <metadata_license>CC-BY-SA-3.0</metadata_license>
- <project_license>GPL-2.0</project_license>
- <name>ProGuard</name>
- <summary>Java optimizer and obfuscator</summary>
- <description>
- <p>
- ProGuard is a free Java class file shrinker, optimizer, obfuscator, and
- preverifier. It detects and removes unused classes, fields, methods, and
- attributes. It optimizes bytecode and removes unused instructions. It
- renames the remaining classes, fields, and methods using short meaningless
- names. Finally, it preverifies the processed code for Java 6 or for Java
- Micro Edition.
- </p>
- <p>
- ProGuard is useful for making code more compact and more efficient, on the
- desktop, on tablets, on smartphones, and on embedded devices. It also
- makes code more difficult to reverse engineer.Power Statistics is a
- program used to view historical and current battery information and will
- show programs running on your computer using power.
- </p>
- </description>
- <screenshots>
- <screenshot type="default" width="918" height="671">http://proguard.sourceforge.net/screenshot_gui1.gif</screenshot>
- <screenshot width="755" height="633">http://proguard.sourceforge.net/screenshot_console.gif</screenshot>
- </screenshots>
- <url type="homepage">http://proguard.sourceforge.net/</url>
- <updatecontact>eric@graphics.cornell.edu</updatecontact>
-</application> \ No newline at end of file
diff --git a/docs/quality.html b/docs/quality.html
deleted file mode 100644
index 4c5f9e5..0000000
--- a/docs/quality.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Quality</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="index.html#quality.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="index.html#quality.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Quality</h2>
-
-In order to get a feel for the quality of the <b>ProGuard</b> code, it is run
-through a regular automatic build process. This process produces numerous
-statistics on the source code, Java lint comments, Java documentation
-comments, the Java documentation itself, html lint comments on the Java
-documentation, spell checks, compilation results, an output jar, dead code
-analysis, a shrunk and obfuscated jar (using ProGuard itself!), test runs with
-memory and performance analyses, etc. Most analyses are produced using freely
-available tools. The results are poured into a convenient set of web pages
-using bash/sed/awk scripts. You're welcome to have a look at an uploaded
-snapshot of one of these runs:
-<p>
-<center><a href="http://proguard.sourceforge.net/quality/"
-target="other">Automated Code Analysis and Testing Pages</a> (at <a
-href="http://sourceforge.net/projects/proguard/"
-target="other">SourceForge</a>)</center>
-<p>
-The pages will appear in a new window, which you probably want to view at
-full-screen size.
-<p>
-
-In addition, <b>ProGuard</b> is tested against a constantly growing test suite
-(more than 1800 tests at this time of writing). These small programs contain a
-wide range of common and uncommon constructs, in order to detect any regression
-problems as soon as possible.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/results.html b/docs/results.html
deleted file mode 100644
index ff2572b..0000000
--- a/docs/results.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Results</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="index.html#results.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="index.html#results.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Results</h2>
-
-<b>ProGuard</b> successfully processes any Java bytecode, ranging from small
-midlets to entire run-time libraries. It primarily reduces the size of the
-processed code, with some potential increase in efficiency as an added bonus.
-The improvements obviously depend on the original code. The table below
-presents some typical results:
-<p>
-
-<table>
-
-<tr>
-<th width="28%">Input Program</th>
-<th width="12%">Original size</th>
-<th width="12%">After shrinking</th>
-<th width="12%">After optim.</th>
-<th width="12%">After obfusc.</th>
-<th width="12%">Total reduction</th>
-<th width="12%">Time</th>
-<th width="12%">Memory usage</th>
-</tr>
-
-<tr>
-<td><a target="other" href="http://www.oracle.com/technetwork/java/javame/index.html">Worm</a>, a sample midlet from Oracle's JME</td>
-<td align="center">10.3 K</td>
-<td align="center">9.8 K</td>
-<td align="center">9.6 K</td>
-<td align="center">8.5 K</td>
-<td align="center">18 %</td>
-<td align="center">2 s</td>
-<td align="center">19 M</td>
-</tr>
-
-<tr>
-<td><a target="other" href="http://www.javadocking.com/">Javadocking</a>, a docking library</td>
-<td align="center">290 K</td>
-<td align="center">281 K</td>
-<td align="center">270 K</td>
-<td align="center">201 K</td>
-<td align="center">30 %</td>
-<td align="center">12 s</td>
-<td align="center">32 M</td>
-</tr>
-
-<tr>
-<td><b>ProGuard</b> itself</td>
-<td align="center">648 K</td>
-<td align="center">579 K</td>
-<td align="center">557 K</td>
-<td align="center">348 K</td>
-<td align="center">46 %</td>
-<td align="center">28 s</td>
-<td align="center">66 M</td>
-</tr>
-
-<tr>
-<td><a target="other" href="http://www.clarkware.com/software/JDepend.html">JDepend</a>, a Java quality metrics tool</td>
-<td align="center">57 K</td>
-<td align="center">36 K</td>
-<td align="center">33 K</td>
-<td align="center">28 K</td>
-<td align="center">51 %</td>
-<td align="center">6 s</td>
-<td align="center">24 M</td>
-</tr>
-
-<tr>
-<td><a target="other" href="ihttp://www.oracle.com/technetwork/java/javase/overview/index.html">the run-time classes</a> from Oracle's Java 6</td>
-<td align="center">53 M</td>
-<td align="center">23 M</td>
-<td align="center">22 M</td>
-<td align="center">18 M</td>
-<td align="center">66 %</td>
-<td align="center">16 min</td>
-<td align="center">270 M</td>
-</tr>
-
-<tr>
-<td><a target="other" href="http://tomcat.apache.org/">Tomcat</a>, the Apache servlet container</td>
-<td align="center">1.1 M</td>
-<td align="center">466 K</td>
-<td align="center">426 K</td>
-<td align="center">295 K</td>
-<td align="center">74 %</td>
-<td align="center">17 s</td>
-<td align="center">44 M</td>
-</tr>
-
-<tr>
-<td><a target="other" href="http://javancss.codehaus.org/">JavaNCSS</a>, a Java source metrics tool</td>
-<td align="center">632 K</td>
-<td align="center">242 K</td>
-<td align="center">212 K</td>
-<td align="center">152 K</td>
-<td align="center">75 %</td>
-<td align="center">20 s</td>
-<td align="center">36 M</td>
-</tr>
-
-<tr>
-<td><a target="other" href="http://ant.apache.org/">Ant</a>, the Apache build tool</td>
-<td align="center">2.4 M</td>
-<td align="center">401 K</td>
-<td align="center">325 K</td>
-<td align="center">242 K</td>
-<td align="center">90 %</td>
-<td align="center">23 s</td>
-<td align="center">61 M</td>
-</tr>
-
-</table>
-<p>
-Results were measured with ProGuard 4.0 on a 2.6 GHz Pentium 4 with 512 MB
-of memory, using Sun JDK 1.5.0 in Fedora Core 3 Linux. All of this technology
-and software has evolved since, but the gist of the results remains the same.
-<p>
-The program sizes include companion libraries. The shrinking step produces the
-best results for programs that use only small parts of their libraries. The
-obfuscation step can significantly shrink large programs even further, since
-the identifiers of their many internal references can be replaced by short
-identifiers.
-<p>
-The Java 6 run-time classes are the most complex example. The classes perform
-a lot of introspection, interacting with the native code of the virtual
-machine. The 1500+ lines of configuration were largely composed by automated
-analysis, complemented by a great deal of trial and error. The configuration
-is probably not complete, but the resulting library successfully serves as a
-run-time environment for running applications like ProGuard and the ProGuard
-GUI.
-<p>
-For small inputs, timings are governed by the reading and parsing of the jars.
-For large inputs, the optimization step becomes more important. For instance,
-processing the Java 6 run-time classes without optimization only takes 2
-minutes.
-<p>
-Memory usage (the amount of physical memory used by ProGuard while processing)
-is governed by the basic java virtual machine and by the total size of the
-library jars and program jars.
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-
-</body>
-</html>
diff --git a/docs/saikoalogo.png b/docs/saikoalogo.png
deleted file mode 100644
index 5b34172..0000000
--- a/docs/saikoalogo.png
+++ /dev/null
Binary files differ
diff --git a/docs/screenshot_console.gif b/docs/screenshot_console.gif
deleted file mode 100644
index 8aea61e..0000000
--- a/docs/screenshot_console.gif
+++ /dev/null
Binary files differ
diff --git a/docs/screenshot_console_small.gif b/docs/screenshot_console_small.gif
deleted file mode 100644
index 3f55f5b..0000000
--- a/docs/screenshot_console_small.gif
+++ /dev/null
Binary files differ
diff --git a/docs/screenshot_gui1.gif b/docs/screenshot_gui1.gif
deleted file mode 100644
index 233e180..0000000
--- a/docs/screenshot_gui1.gif
+++ /dev/null
Binary files differ
diff --git a/docs/screenshot_gui2.gif b/docs/screenshot_gui2.gif
deleted file mode 100644
index aecdb35..0000000
--- a/docs/screenshot_gui2.gif
+++ /dev/null
Binary files differ
diff --git a/docs/screenshot_gui3.gif b/docs/screenshot_gui3.gif
deleted file mode 100644
index 17950ee..0000000
--- a/docs/screenshot_gui3.gif
+++ /dev/null
Binary files differ
diff --git a/docs/screenshot_gui4.gif b/docs/screenshot_gui4.gif
deleted file mode 100644
index 31e60fa..0000000
--- a/docs/screenshot_gui4.gif
+++ /dev/null
Binary files differ
diff --git a/docs/screenshot_gui5.gif b/docs/screenshot_gui5.gif
deleted file mode 100644
index 1313db2..0000000
--- a/docs/screenshot_gui5.gif
+++ /dev/null
Binary files differ
diff --git a/docs/screenshot_gui6.gif b/docs/screenshot_gui6.gif
deleted file mode 100644
index c200b97..0000000
--- a/docs/screenshot_gui6.gif
+++ /dev/null
Binary files differ
diff --git a/docs/screenshot_gui7.gif b/docs/screenshot_gui7.gif
deleted file mode 100644
index bc5d6ed..0000000
--- a/docs/screenshot_gui7.gif
+++ /dev/null
Binary files differ
diff --git a/docs/screenshot_gui8.gif b/docs/screenshot_gui8.gif
deleted file mode 100644
index 95a1a30..0000000
--- a/docs/screenshot_gui8.gif
+++ /dev/null
Binary files differ
diff --git a/docs/screenshots.html b/docs/screenshots.html
deleted file mode 100644
index 66334fc..0000000
--- a/docs/screenshots.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Screenshots</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="index.html#screenshots.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="index.html#screenshots.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Screenshots</h2>
-
-<table><tr><td>
-<a href="screenshot_gui1.gif" target="other">
-<img src="screenshots_gui_small.gif" width="320" height="223" align="right"
- alt="GUI screenshot" usemap="#guimap" /></a>
-
-<map id="guimap" name="guimap">
-<area shape="rect" coords="2,7,46,16" alt="ProGuard" href="screenshot_gui1.gif" target="other">
-<area shape="rect" coords="2,17,46,27" alt="Input/Output" href="screenshot_gui2.gif" target="other">
-<area shape="rect" coords="2,28,46,37" alt="Shrinking" href="screenshot_gui3.gif" target="other">
-<area shape="rect" coords="2,38,46,48" alt="Optimization" href="screenshot_gui4.gif" target="other">
-<area shape="rect" coords="2,49,46,58" alt="Obfuscation" href="screenshot_gui5.gif" target="other">
-<area shape="rect" coords="2,59,46,69" alt="Information" href="screenshot_gui6.gif" target="other">
-<area shape="rect" coords="2,70,46,79" alt="Process" href="screenshot_gui7.gif" target="other">
-<area shape="rect" coords="2,80,46,90" alt="ReTrace" href="screenshot_gui8.gif" target="other">
-</map>
-
-The graphical user interface to <b>ProGuard</b> works like a wizard. It allows
-you to browse through the presented tabs and fill them out.
-<p>
-You can click on the small tab buttons to see the full-size versions of the
-tabs.
-
-</td></tr>
-<tr><td>
-<a href="screenshot_console.gif" target="other">
-<img src="screenshot_console_small.gif" width="320" height="268" align="left"
- alt="Console screenshot" /></a>
-
-Of course, real developers don't need all this point-and-click fluff. They
-write short configuration files using their favorite text editors and invoke
-<b>ProGuard</b> from the command-line.
-<p>
-You can click on the image to see the full-size version.
-
-</td></tr></table>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-</body>
-</html>
diff --git a/docs/screenshots_gui_small.gif b/docs/screenshots_gui_small.gif
deleted file mode 100644
index bc32ccb..0000000
--- a/docs/screenshots_gui_small.gif
+++ /dev/null
Binary files differ
diff --git a/docs/sections.html b/docs/sections.html
deleted file mode 100644
index cfe45b1..0000000
--- a/docs/sections.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-script-type" content="text/javascript">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>Sections</title>
-</head>
-<body class="navigation">
-
-<ul class="navigation">
-<li><a target="main" href="main.html">Main</a></li>
-<li><a target="main" href="results.html">Results</a></li>
-<li><a target="main" href="FAQ.html">FAQ</a></li>
-<li><a href="manual/sections.html">Manual</a></li>
-<li><a target="main" href="quality.html">Quality</a></li>
-<li><a target="main" href="screenshots.html">Screenshots</a></li>
-<li><a target="main" href="testimonials.html">Testimonials</a></li>
-<li><a target="main" href="license.html">License</a></li>
-<li><a target="main" href="downloads.html">Downloads</a></li>
-<li><a target="main" href="feedback.html">Feedback</a></li>
-<li><a target="main" href="acknowledgements.html">Ack'ments</a></li>
-<li><a target="main" href="alternatives.html">Alternatives</a></li>
-</ul>
-
-<p>
-<center>
-<small>More Android code protection:</small>
-<p>
-<a href="http://www.saikoa.com/dexguard" target="_top">
-<img src="dexguard.png" width="88" height="55" alt="Saikoa" /></a>
-
-<p>
-<small>With support of</small>
-
-<p>
-<a href="http://www.saikoa.com/" target="_top">
-<img src="saikoalogo.png" width="88" height="19" alt="DexGuard" /></a>
-
-<p>
-<a href="http://sourceforge.net/projects/proguard/" target="other">
-<img src="sflogo.png" width="88" height="31" alt="SourceForge" /></a>
-
-</center>
-
-
-</body>
-</html>
diff --git a/docs/sflogo.png b/docs/sflogo.png
deleted file mode 100644
index 142a6f9..0000000
--- a/docs/sflogo.png
+++ /dev/null
Binary files differ
diff --git a/docs/steel.gif b/docs/steel.gif
deleted file mode 100644
index 307b57a..0000000
--- a/docs/steel.gif
+++ /dev/null
Binary files differ
diff --git a/docs/style.css b/docs/style.css
deleted file mode 100644
index 79f4c07..0000000
--- a/docs/style.css
+++ /dev/null
@@ -1,234 +0,0 @@
-
-@charset "iso-8859-1";
-
-/* Global settings. */
-
-body
-{
- background: #FFFFFF;
-}
-
-h1
-{
- text-align: center;
-}
-
-h2
-{
- text-align: center;
-}
-
-h3
-{
- background: #EEEEFF;
- padding: 10px;
-}
-
-h3 div
-{
- font-weight: normal;
- font-size: 80%;
- float: right;
-}
-
-table
-{
- width: 100%;
-}
-
-th
-{
- padding: 4px;
-}
-
-tr.disappeared td
-{
- background: #EEEEEE;
-}
-
-td
-{
- background: #EEEEFF;
- padding: 8px;
-}
-
-ul.spacious li
-{
- padding: 8px;
-}
-
-a
-{
- text-decoration: none;
-}
-
-img
-{
- border: none;
-}
-
-a.button {
- color: #000000;
- text-decoration: none;
- background: #E0E0E0;
- border: 1px outset #FFFFFF;
- float: right;
-}
-
-a.largebutton {
- font-weight: bold;
- color: #000000;
- margin: 0px;
- padding: 10px;
- background: url("steel.gif");
- text-decoration: none;
- border: 1px outset #FFFFFF;
-}
-
-/* Settings for the introductory paragraph. */
-
-p.intro
-{
- background: #EEEEFF;
- padding: 10px;
- border: 1px solid #000000;
-}
-
-/* Settings for the title frame. */
-
-body.title
-{
- margin: 0px;
- padding: 0px;
- background: #C0C0C0;
-}
-
-div.title
-{
- height: 48px;
- margin: 0px;
- padding: 0px;
- border-width: 1px;
- border-style: solid;
- border-color: #FFFFFF #808080 #808080 #FFFFFF;
- background: url("steel.gif");
-}
-
-div.title h1
-{
- margin: 0px;
- padding: 0px;
- padding-top: 8px;
- padding-left: 40%;
- float: left;
-}
-
-div.title div
-{
- margin: 0px;
- padding: 0px;
- padding-top: 12px;
- padding-right: 20px;
- float: right;
-}
-
-/* Settings for the section frames. */
-
-body.navigation
-{
- margin: 0px;
- padding: 0px;
- background: #F8F8F8;
-}
-
-ul.navigation
-{
- margin: 0px;
- padding: 0px;
- list-style: none;
- text-align: center;
- background: url("steel.gif");
-}
-
-ul.navigation li
-{
- margin: 0px;
- padding: 0px;
- border-width: 1px;
- border-style: solid;
- border-color: #FFFFFF #808080 #808080 #FFFFFF;
- color: #000000;
- font-weight: bold;
-}
-
-ul.navigation li.title
-{
- margin: 0px;
- padding: 4px 10px;
- background: #E0E0E0;
-}
-
-ul.navigation li a
-{
- margin: 0px;
- padding: 6px 0px;
- background: transparent;
- color: #000000;
- text-decoration: none;
- display: block;
-}
-
-ul.navigation li a:hover,
-ul.navigation li a:focus
-{
- background: #FFFFFF;
-}
-
-/* Settings for the yellow note tables. */
-
-table.note
-{
- width: 408px;
- border: none;
- border-spacing: 0px;
-}
-
-td.shadow8
-{
- width: 8px;
- padding: 0px;
- margin: 0px;
- vertical-align: bottom;
- background: transparent;
-}
-
-td.shadow400
-{
- width: 400px;
- padding: 0px;
- margin: 0px;
- text-align: right;
- background: transparent;
-}
-
-td.note
-{
- width: 380px;
- background: #FFFFC0;
- padding: 0px;
- margin: 0px;
-}
-
-p.note
-{
- padding: 0px;
- margin: 0px 10px;
- text-align: center;
-}
-
-p.author
-{
- padding: 0px;
- margin: 0px 10px;
- text-align: right;
-}
diff --git a/docs/testimonials.html b/docs/testimonials.html
deleted file mode 100644
index 2d90a41..0000000
--- a/docs/testimonials.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard Testimonials</title>
-</head>
-<body>
-
-<script type="text/javascript" language="JavaScript">
-<!--
-if (window.self==window.top)
- document.write('<a class="largebutton" target="_top" href="index.html#testimonials.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
-//-->
-</script>
-<noscript>
-<a class="largebutton" target="_top" href="index.html#testimonials.html">ProGuard index</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a>
-<a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a>
-<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
-</noscript>
-
-<h2>Testimonials</h2>
-
-And now for some shameless self-glorification and name-dropping...
-<p>
-<b>ProGuard</b> is probably the most popular java shrinker, optimizer, and
-obfuscator world-wide. It is being used by developers at companies and
-organizations like IBM, HP, Siemens, Nokia, Google, Intel, and NATO. It is the
-default tool in many development environments like Oracle's Wireless Toolkit,
-Netbeans, EclipseME, Google's Android SDK, and more. Although the quotes below
-probably don't represent official views of any kind, encouragements like these
-do keep me happy.
-<p>
-
-<center><table class="note">
-<tr><td class="note"><p class="note"><cite>
-ProGuard is <b>the</b> ultimate java obfuscator!
-</cite></p>
-<p class="author">P.S, IBM</p></td>
-<td class="shadow8"><img src="drop2.gif" width="8" height="100" /></td></tr><tr>
-<td class="shadow400"><img src="drop1.gif" width="400" height="8" /></td>
-<td class="shadow8"><img src="drop3.gif" width="8" height="8" /></td>
-</tr></table></center>
-<p>
-
-Also:
-<center><table class="note">
-<tr><td class="note"><p class="note"><cite>
-ProGuard is pure quality - powerful and trouble-free.
-</cite></p>
-<p class="author">M.B., Statestep</p></td>
-<td class="shadow8"><img src="drop2.gif" width="8" height="100" /></td></tr><tr>
-<td class="shadow400"><img src="drop1.gif" width="400" height="8" /></td>
-<td class="shadow8"><img src="drop3.gif" width="8" height="8" /></td>
-</tr></table></center>
-<p>
-
-And:
-<center><table class="note">
-<tr><td class="note"><p class="note"><cite>
-It is the simplest and most robust obfuscator we have ever used.
-</cite></p>
-<p class="author">I.I., Hewlett-Packard</p></td>
-<td class="shadow8"><img src="drop2.gif" width="8" height="100" /></td></tr><tr>
-<td class="shadow400"><img src="drop1.gif" width="400" height="8" /></td>
-<td class="shadow8"><img src="drop3.gif" width="8" height="8" /></td>
-</tr></table></center>
-<p>
-
-And indeed:
-<center><table class="note">
-<tr><td class="note"><p class="note"><cite>
-ProGuard rules. Much easier to use than the commercial alternatives.
-</cite></p>
-<p class="author">B.G., Quiotix Corp.</p></td>
-<td class="shadow8"><img src="drop2.gif" width="8" height="100" /></td></tr><tr>
-<td class="shadow400"><img src="drop1.gif" width="400" height="8" /></td>
-<td class="shadow8"><img src="drop3.gif" width="8" height="8" /></td>
-</tr></table></center>
-<p>
-
-Straight from <b>ProGuard</b>'s open discussion forum:
-<p>
-<center><table class="note">
-<tr><td class="note"><p class="note"><cite>
-After searching for, trying to trial, and futzing with numerous other
-obfuscators and shrinkers, ProGuard stands out as the simplest, most robust,
-and accurate shrinker of them all.
-</cite></p>
-<p class="author">D.J., Joot</p></td>
-<td class="shadow8"><img src="drop2.gif" width="8" height="100" /></td></tr><tr>
-<td class="shadow400"><img src="drop1.gif" width="400" height="8" /></td>
-<td class="shadow8"><img src="drop3.gif" width="8" height="8" /></td>
-</tr></table></center>
-<p>
-
-From the article "Obfuscating MIDlet Suites with ProGuard" at <a
-target="other" href="http://developers.sun.com/">developers.sun.com</a>:
-<p>
-<center><table class="note">
-<tr><td class="note"><p class="note"><cite>
-Its friendly license, attractive price tag, compelling performance, and
-powerful configuration options make it an excellent addition to your MIDlet
-development toolbox.
-</cite></p>
-<p class="author">J.K., Sun</p></td>
-<td class="shadow8"><img src="drop2.gif" width="8" height="100" /></td></tr><tr>
-<td class="shadow400"><img src="drop1.gif" width="400" height="8" /></td>
-<td class="shadow8"><img src="drop3.gif" width="8" height="8" /></td>
-</tr></table></center>
-<p>
-
-And, of course, the price is stunning:
-<p>
-<center><table class="note">
-<tr><td class="note"><p class="note"><cite>
-You could've been rich.
-</cite></p>
-<p class="author">My mother</p></td>
-<td class="shadow8"><img src="drop2.gif" width="8" height="100" /></td></tr><tr>
-<td class="shadow400"><img src="drop1.gif" width="400" height="8" /></td>
-<td class="shadow8"><img src="drop3.gif" width="8" height="8" /></td>
-</tr></table></center>
-
-<hr />
-<address>
-Copyright &copy; 2002-2014
-<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
-</address>
-
-</body>
-</html>
diff --git a/docs/title.gif b/docs/title.gif
deleted file mode 100644
index 5e6ca26..0000000
--- a/docs/title.gif
+++ /dev/null
Binary files differ
diff --git a/docs/title.html b/docs/title.html
deleted file mode 100644
index 7dea197..0000000
--- a/docs/title.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="content-style-type" content="text/css">
-<link rel="stylesheet" type="text/css" href="style.css">
-<title>ProGuard</title>
-</head>
-<body class="title">
-
-<div class="title">
-<h1><img src="title.gif" width="154" height="29" alt="ProGuard" /></h1>
-<div>Version 5.1</div>
-</div>
-
-</body>
-</html>