summaryrefslogtreecommitdiff
path: root/plugins/AVS/docs
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2012-07-05 12:16:42 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2012-07-05 12:16:42 +0000
commitc78cb0fb36db5ac84fdc6f012074a6c1cea68b1e (patch)
tree268188343e6825e5e6cd685a97fe8664034fc72c /plugins/AVS/docs
parentfd5bbf93523a1168559d002757ae977a25ada405 (diff)
AVS: folder structure change
git-svn-id: http://svn.miranda-ng.org/main/trunk@769 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/AVS/docs')
-rw-r--r--plugins/AVS/docs/CHANGELOG.AVS182
-rw-r--r--plugins/AVS/docs/README94
-rw-r--r--plugins/AVS/docs/avs-translation.txt71
-rw-r--r--plugins/AVS/docs/license.txt340
4 files changed, 687 insertions, 0 deletions
diff --git a/plugins/AVS/docs/CHANGELOG.AVS b/plugins/AVS/docs/CHANGELOG.AVS
new file mode 100644
index 0000000000..a673bdff73
--- /dev/null
+++ b/plugins/AVS/docs/CHANGELOG.AVS
@@ -0,0 +1,182 @@
+
+ Version history:
+
+0.0.2.6 - 2006/08/03
+
+ * added file hashing (pescuma)
+ * rewrote the picture loading code. It is now running in a background thread
+ at low priority. The loader thread is the only instance which actually writes
+ to the cache entries. It does this with a small delay and notifies the hook
+ subscribers when a picture has been loaded. While it is not fully loaded,
+ the fallback protocol picture may be used. This makes connecting or
+ loading the clist with lots of avatars significantly faster at the cost
+ of delayed picture appearance.
+ It may also help with the sporadic lockups since the part of the code which
+ runs in the callers thread context is now much simpler.
+
+0.0.2.5 - 2006/07/30
+
+ * fixed updater support
+ * moved InitPolls() to ModulesLoaded() to avoid a problem with missing
+ core services.
+ * fixed keyboard navigation glitch in the Customize->Contact pictures dialog.
+
+0.0.2.4 - 2006/07/30
+
+ * bugfix (missing protocol avatars after migrating to new relpath)
+ * added proper version info resource record (showing ansi/unicode)
+ * added project files for Visual C++ 6 (source code release only)
+
+0.0.2.3 - 2006/07/11
+
+ * should now work better with metacontacts. Subcontact avatar changes are
+ "forwarded" to the master contact.
+
+ * relative path names are now relative to the DATABASE directory, not
+ Mirandas root directory.
+
+ * missing picture files and/or invalid database entries will now result
+ in a refresh request.
+
+0.0.2.0 introduced big internal changes. New request queue system (written by Pescuma)
+ loadavatars no longer depends on imgdecoder.dll, but needs a recent png2dib
+ plugin (supplied with Miranda 0.4.3.x nightly builds)
+
+0.0.1.12 - 0.0.2.2 - released via nightlys (see SVN changelog)
+
+0.0.1.11 - 2005/11/10
+
+ + added patch by pescuma for making normal avatars transparent (or semi-
+ transparent).
+ There are global (under Customize->Contact pictures) and per contact settings
+ (contact menu -> Contact picture...). In order to get good results, you will need
+ to tweak the settings a bit - it works for most avatar pictures with a uni-color
+ background, but it really depends on the image.
+
+ + built with Visual Studio 2005 (Visual C++ 8.0). The DLL is now statically
+ linked, so they are somewhat bigger, but it avoids error messages because of the
+ new VC++ 8 runtime which is not installed on most PCs.
+
+ + added unicode version (loadavatarsW.dll) which will display unicode nicknames in
+ the "per user" contact picture dialog.
+
+ + added services and events to manage own avatar pictures. See m_avatars.h for more
+ information. Also, the drawing service was enhanced to allow drawing your own
+ avatars.
+
+0.0.1.10 - 2005/10/19
+
+ ! added support for jabber avatar updates.
+
+ + better cleanup on Unload()
+
+0.0.1.9 - 2005/10/18
+
+ * accept .dat as valid image extension (sometimes, icq avatars are saved as .dat
+ files, even if they are actually JPG images (reason unknown, but we can load
+ them anyway. MS_UTILS_LOADBITMAP will return an error when the file is not
+ really a valid image - the extension doesn't matter).
+
+0.0.1.8 - 2005/10/17
+
+ ! fix. Don't show tray warning messages about invalid avatar file size when
+ the option "Show warning messages" on Customize->Contact pictures is unchecked.
+
+ * changed way how protocols are enabled/disabled. After protocols have been added
+ or removed, "new" protocols are automatically enabled, so you don't have to do
+ that manually any more.
+
+ * you can completely disable the size limit check by setting the size limit on
+ Customize->Contact List to 0 (zero).
+
+0.0.1.7 - 2005/10/16
+
+ * bugfix: check filenames more aggressivly.
+
+ * bugfix: premultiply was broken (thanks FYR)
+
+ + added a service to draw a contacts picture to a target device context.
+ See m_avatars.h for description on how to use that service.
+
+ + added file size limitation to the picture loader. The default are 70Kbytes,
+ should be enough for most avatar pictures (they have to be small images).
+ The limit can be increased on the option page (Customize->contact pictures).
+
+0.0.1.5 - 2005/09/15
+
+ + added updater support
+
+ * moved option page to Customize->Contact pictures
+
+0.0.1.4 - 2005/08/31
+
+ * cache reallocs will now send avatar change notifies (realloc() may move the
+ cache in memory, so pointers to avatar cache entries may become invalid).
+
+ ! bugfix - badly written protocols which load themself too late are now
+ skipped and won't cause troubles because of the protocol list reallocation.
+
+0.0.1.3 - 2005/08/30
+
+ + ability to lock the avatar (protect from automatic updates). Useful, if you
+ have set a local contact picture and don't want it to be overwritten.
+ Actually, the feature does not really lock the avatar updating - it will
+ only save the picture from being overwritten.
+
+ + added UI to set/change/lock avatar. DEVELOPERS please check m_avatars.h on how
+ to use the service from your own plugins. There are now services to lock and/or
+ set the avatar, either by providing a valid image filename or by using a file
+ selection dialog. Also, there is a service to call the avatar dialog for a
+ hContact.
+
+ * struct avatarCacheEntry has changed too. It now provides szFilename which
+ will contain the full image filename of the current avatar in use.
+
+ * added a menu item to the contact menu which allows to set avatar options (local
+ picture, locked avatar, and a "hidden" attribute).
+ The hidden attribute is set in the struct avatarCacheEntry
+
+ + added support for PNG images (imgdecoder.dll needs to be present in either the
+ main miranda directory or the \Plugins subfolder. Transparent PNG images are
+ supported and the avatar service will perform the premultiplication of alpha
+ values so that the image can (and should) be rendered with the AlphaBlend()
+ API.
+
+0.0.1.2 - 2005/08/20
+
+ + the service now creates and uses relative filenames for all contact pictures,
+ including protocol avatars, if possible.
+
+ * for protocols which are in "invisible" status, no active avatar fetching
+ is performed. This is to avoid problems with MSN and privacy issues for
+ other protocols (if you're invisible, then the protocol should not initiate
+ any outbound communications which may require direct p2p connections).
+
+ * an option page has been added. Currently, you can:
+
+ + select, for which protocols the service should ACTIVELY fetch avatars.
+ If you set a protocols to "inactive" (uncheck it), already existing
+ avatars for contacts of that protocol will continue to work, but the
+ service will no longer actively refresh avatars.
+
+ + set protocol pictures (pseudo avatars). You can select local pictures
+ for each installed protocol. These will be used as a fallback then, if
+ no avatar is available for a contact. You can also remove these pictures.
+
+ * don't fetch avatars for contacts which are either blocked or set on the
+ invisibility list (ApparentMode == ID_STATUS_OFFLINE). Reason: No active
+ outbound communications w/o user intervention should be initiated for blocked
+ contacts.
+
+ + added support for the updater plugin.
+
+0.0.1.1 - 2005/08/06
+
+ * changed API. Don't return HBITMAP directly, but instead, it returns
+ a pointer to a struct avatarCacheEntry which can be used to obtain
+ the bitmap handle.
+
+0.0.1.0 - 2005/08/05
+
+ * initial release, cvs import.
+
diff --git a/plugins/AVS/docs/README b/plugins/AVS/docs/README
new file mode 100644
index 0000000000..d82d1d7fec
--- /dev/null
+++ b/plugins/AVS/docs/README
@@ -0,0 +1,94 @@
+
+ Load avatars 0.0.1.0
+ --------------------
+
+This is a SERVICE plugin, which means, it doesn't provide anything useful
+on its own except for a few service(s) and event(s) which can be used by
+other plugins.
+
+What it does?
+-------------
+
+It loads avatars on demand and maintains an internal cache of avatar
+bitmap handles. It also handles avatar changes transparently and can
+notify event subscribers about avatar changes.
+
+How it works?
+-------------
+
+The service MS_AV_GETAVATARBITMAP returns a pointer to a cache entry, if an
+avatar is present for that contact. The service MAY return 0, in which
+case, there is no valid avatar yet. However, that doesn't mean there
+isn't ANY avatar, just that the avatar is not yet ready for use. When
+someone calls the service requesting an avatar, the plugin will try
+to get the avatar (if possible) and notify all subscribers via a
+hookable event as soon as the avatar is ready. If the avatar is
+already in the cache, it simply returns the cached entry.
+
+Whenever an avatar changes, the plugin fires an event, passing the
+contacts handle in wParam and a data structure with the avatar information
+in lParam. Plugins which use the bitmap handles returned by
+MS_AV_GETAVATARBITMAP MUST subscribe to ME_AV_AVATARCHANGED, because the
+original bitmap handle may become invalid when the avatar changes.
+
+Fetching avatars is done in a separate thread with reasonable delays to
+avoid getting into troubles with flood protection(s). Avatars are cached
+"in memory".
+
+
+The included clist_nicer_plus.dll is a demonstration of how the avatar
+service works and can be used by developers. Having a central instance
+which maintains avatars saves resources and increases performance.
+
+
+// example, how to use it (FOR DEVS only)
+
+#include "m_avatars.h"
+
+struct avatarCacheEntry *ace = 0;
+HBITMAP hbmAvatar = 0;
+
+ace = (struct avatarCacheEntry *)CallService(MS_AV_GETAVATARBITMAP, (WPARAM)hContact, 0);
+
+/*
+ now, check the return value. if it is 0, then the avatar is not yet ready or unavailble
+ for that contact. if it was only "not ready", your plugin will be notified by the
+ hookable event ME_AV_AVATARCHANGED
+
+ if the return value is != 0, then it is a valid bitmap handle. DON'T DESTROY IT IN YOUR CODE
+*/
+
+
+/*
+ * event function
+ * initialise with:
+ * HANDLE hEvent = HookEvent(ME_AV_AVATARCHANGED, AvatarChanged);
+ */
+
+static int AvatarChanged(WPARAM wParam, LPARAM lParam)
+{
+ struct avatarCacheEntry *ace = (struct avatarCacheEntry *)lParam;
+ HANDLE hContact = (HANDLE)wParam;
+
+ if(ace == NULL)
+ return 0;
+ if(ace->cbSize != sizeof(struct avatarCacheEntry))
+ return 0; // safety check(s)
+
+ HBITMAP hbmAvatar = ace->hbmPic;
+ ...
+ ...
+}
+
+
+TODO: maybe more intelligent cache managment, including auto-expire of avatars which
+ have not been used for a while.
+
+
+Copyright and license:
+----------------------
+
+This plugin is released under the terms of the GNU general public license V2 or any later
+version.
+
+Written, 2005 by Nightwish, silvercircle@gmail.com
diff --git a/plugins/AVS/docs/avs-translation.txt b/plugins/AVS/docs/avs-translation.txt
new file mode 100644
index 0000000000..cd05000e7e
--- /dev/null
+++ b/plugins/AVS/docs/avs-translation.txt
@@ -0,0 +1,71 @@
+; Common strings that belong to many files
+;[Make the avatar square]
+
+; ../../plugins/AVS/acc.cpp
+;[Protocols have different avatars]
+
+; ../../plugins/AVS/avs.rc
+;[ Background ]
+;[ Options ]
+;[CAUTION: These pictures are NOT your own avatars.\nTo set your own Avatar goto Main Menu | View/Change My Details | Avatars]
+;[Cancel]
+;[Change]
+;[Color diff:]
+;[Color difference allowed:]
+;[Contact picture]
+;[Delete]
+;[Delete default picture]
+;[Dialog]
+;[Draw avatars grayscale]
+;[Make transparency proportional to color diff]
+;[Num of points to define bkg:]
+;[OK]
+;[Picture options]
+;[Points:]
+;[Protect the picture]
+;[Protect the picture and prevent automatic avatars from overwriting it]
+;[Reset]
+;[Resize the avatar to fit max allowed protocol size]
+;[Set]
+;[Set as hidden]
+;[Set default picture]
+;[Show warning messages]
+;[The pictures you can set here are used as default avatars\nfor contacts that don't have their own.\nUse the checkboxes to enable/disable showing avatars for the protocols.]
+;[This uses the same additional options as in \"Contact Avatars\" tab]
+;[Transparent]
+;[Try to draw avatar background transparent (for images without transparency)]
+;[Try to draw own avatar background transparent (for images without transparency)]
+;[Try to make picture background transparent]
+;[Use defaults]
+;[Use per protocol avatars]
+;[When setting avatars, always make them square]
+
+; ../../plugins/AVS/main.cpp
+;[All Files]
+;[Avatar]
+;[Avatar Service]
+;[Avatars]
+;[Contact Avatars]
+;[Customize]
+;[Fatal error, image services not found. Avatar services will be disabled.]
+;[Flash Animations]
+;[GIF Bitmaps]
+;[Global avatar for %s accounts]
+;[Grow avatar to fit max allowed protocol size]
+;[JPEG Bitmaps]
+;[Own Avatars]
+;[PNG Bitmaps]
+;[Protocols]
+;[Set My Avatar]
+;[Set My Avatar for %s]
+;[Windows Bitmaps]
+;[XML Files]
+
+; ../../plugins/AVS/options.cpp
+;[Are you sure you want to remove your avatar?]
+;[Contact has no avatar]
+;[Delete picture file from disk (may be necessary to force a reload, but will delete local pictures)?]
+;[Global Avatar]
+;[No avatar]
+;[Reset contact picture]
+;[Set avatar options for %s]
diff --git a/plugins/AVS/docs/license.txt b/plugins/AVS/docs/license.txt
new file mode 100644
index 0000000000..7f1161073d
--- /dev/null
+++ b/plugins/AVS/docs/license.txt
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ 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.
+
+ Preamble
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. 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".
+
+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.
+
+ 1. 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.
+
+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.
+
+ 2. 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:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) 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.
+
+ c) 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.)
+
+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.
+
+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.
+
+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.
+
+ 3. 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:
+
+ a) 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,
+
+ b) 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,
+
+ c) 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.)
+
+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.
+
+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.
+
+ 4. 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.
+
+ 5. 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.
+
+ 6. 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.
+
+ 7. 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.
+
+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.
+
+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.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. 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.
+
+ 9. 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.
+
+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.
+
+ 10. 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.
+
+ NO WARRANTY
+
+ 11. 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.
+
+ 12. 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.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ 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.
+
+ 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.
+
+ 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
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.