changeset 28435:4a2adf413aaa

merged with im.pidgin.pidgin
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Mon, 24 Aug 2009 17:20:46 +0900
parents f419bf1e5851 (current diff) 9affcab62522 (diff)
children 336d03cdced6
files configure.ac libpurple/certificate.c libpurple/protocols/jabber/google.c libpurple/protocols/jabber/jabber.c libpurple/protocols/jabber/message.c libpurple/protocols/jabber/si.c libpurple/protocols/msn/msn.c libpurple/protocols/oscar/oscar.c libpurple/protocols/oscar/oscar.h libpurple/protocols/yahoo/libyahoo.c libpurple/protocols/yahoo/libyahoojp.c libpurple/protocols/yahoo/libymsg.c libpurple/protocols/yahoo/util.c libpurple/server.c pidgin/gtkblist.c pidgin/gtkconv.c pidgin/gtknotify.c pidgin/pixmaps/toolbar/22/scalable/voice-call.svg pidgin/pixmaps/toolbar/22/voice-call.png pidgin/pixmaps/toolbar/32/scalable/voice-call.svg pidgin/pixmaps/toolbar/32/voice-call.png pidgin/pixmaps/toolbar/48/scalable/voice-call.svg pidgin/pixmaps/toolbar/48/voice-call.png
diffstat 147 files changed, 5024 insertions(+), 3895 deletions(-) [+]
line wrap: on
line diff
--- a/COPYRIGHT	Wed Aug 19 16:19:45 2009 +0900
+++ b/COPYRIGHT	Mon Aug 24 17:20:46 2009 +0900
@@ -88,6 +88,7 @@
 Matěj Cepl
 Cerulean Studios, LLC
 Jonathan Champ
+Matthew Chapman
 Christophe Chapuis
 Patrick Cheung
 Ka-Hing Cheung
--- a/ChangeLog	Wed Aug 19 16:19:45 2009 +0900
+++ b/ChangeLog	Mon Aug 24 17:20:46 2009 +0900
@@ -1,5 +1,26 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
+version 2.6.2 (??/??/2009):
+	libpurple:
+	* Fix --disable-avahi to actually disable it in configure, as opposed
+	  to just making the warning non-fatal.
+	* Sending custom smileys in MSN chats is now supported.
+
+	XMPP:
+	* Prompt the user before cancelling a presence subscription.
+	* Escape status messages that have HTML entities in the Get Info dialog.
+	* Fix connecting to XMPP domains with no SRV records from Pidgin on
+	  Windows.
+	* Fix typing notifications with Pidgin 2.5.9 or earlier.
+
+	Finch:
+	* Properly detect libpanel on OpenBSD.  (Brad Smith)
+
+version 2.6.1 (08/18/2009):
+	* Fix a crash when some users send you a link in a Yahoo IM
+	* Fix compilation with GTK+ < 2.6.0
+	* Fix compilation on Windows
+
 version 2.6.0 (08/18/2009):
 	libpurple:
 	* Theme support in libpurple thanks to Justin Rodriguez's summer of code
@@ -209,7 +230,9 @@
 	  Miscellaneous categories.
 
 version 2.5.9 (08/18/2009):
-	* Fix a crash via a specially crafted MSN message (CVE-2009-2694).
+	* Fix a crash via a specially crafted MSN message (CVE-2009-2694,
+	  thanks to Core Security Technologies for discovering this and
+	  notifying us privately before announcing it).
 	* Fix a crash in Bonjour, MSN, and XMPP when trying to transfer files with
 	  NULL names.
 
--- a/ChangeLog.API	Wed Aug 19 16:19:45 2009 +0900
+++ b/ChangeLog.API	Mon Aug 24 17:20:46 2009 +0900
@@ -1,5 +1,8 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
+version 2.6.1 (08/18/2009):
+	No changes
+
 version 2.6.0 (08/18/2009):
 	libpurple:
 		Added:
--- a/ChangeLog.win32	Wed Aug 19 16:19:45 2009 +0900
+++ b/ChangeLog.win32	Mon Aug 24 17:20:46 2009 +0900
@@ -1,3 +1,6 @@
+version 2.6.1 (08/18/2009):
+	* No changes
+
 version 2.6.0 (08/18/2009):
 	* Added XMPP URI support.
 
--- a/NEWS	Wed Aug 19 16:19:45 2009 +0900
+++ b/NEWS	Mon Aug 24 17:20:46 2009 +0900
@@ -2,6 +2,11 @@
 
 Our development blog is available at: http://planet.pidgin.im
 
+2.6.1 (08/18/2009):
+	Mark: There were a lot of changes in 2.6.0, and so a few major bugs
+	crept in.  This is a very minor release to fix those bugs.  Sorry for
+	the inconvenience!
+
 2.6.0 (08/18/2009):
 	John:  Wow, four straight releases that I'm the first to NEWS on.  This
 	is getting kinda scary!  I'm beginning to wonder who else actually does
--- a/PLUGIN_HOWTO	Wed Aug 19 16:19:45 2009 +0900
+++ b/PLUGIN_HOWTO	Mon Aug 24 17:20:46 2009 +0900
@@ -1,6 +1,6 @@
 For information on writing a plugin for Purple, Pidgin or Finch, go
-http://developer.pidgin.im and click on API.  From there, see the HOWTOs in the
-"Related Pages" section.
+http://developer.pidgin.im and click on API.  From there, see the
+HOWTOs in the "Related Pages" section.
 
 You can also generate this documentation locally by installing
 doxygen and graphviz dot, then running "make docs" in the
--- a/configure.ac	Wed Aug 19 16:19:45 2009 +0900
+++ b/configure.ac	Mon Aug 24 17:20:46 2009 +0900
@@ -46,8 +46,8 @@
 m4_define([purple_lt_current], [6])
 m4_define([purple_major_version], [2])
 m4_define([purple_minor_version], [6])
-m4_define([purple_micro_version], [0])
-m4_define([purple_version_suffix], [])
+m4_define([purple_micro_version], [2])
+m4_define([purple_version_suffix], [devel])
 m4_define([purple_version],
           [purple_major_version.purple_minor_version.purple_micro_version])
 m4_define([purple_display_version], purple_version[]m4_ifdef([purple_version_suffix],[purple_version_suffix]))
@@ -55,8 +55,8 @@
 m4_define([gnt_lt_current], [6])
 m4_define([gnt_major_version], [2])
 m4_define([gnt_minor_version], [6])
-m4_define([gnt_micro_version], [0])
-m4_define([gnt_version_suffix], [])
+m4_define([gnt_micro_version], [2])
+m4_define([gnt_version_suffix], [devel])
 m4_define([gnt_version],
           [gnt_major_version.gnt_minor_version.gnt_micro_version])
 m4_define([gnt_display_version], gnt_version[]m4_ifdef([gnt_version_suffix],[gnt_version_suffix]))
@@ -312,11 +312,11 @@
 dnl #######################################################################
 dnl # Check for GLib 2.0 (required)
 dnl #######################################################################
-PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.0.0 gobject-2.0 gmodule-2.0 gthread-2.0], , [
+PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.4.0 gobject-2.0 gmodule-2.0 gthread-2.0], , [
 	AC_MSG_RESULT(no)
 	AC_MSG_ERROR([
 
-You must have the GLib 2.0 development headers installed to build.
+You must have GLib 2.4.0 or newer development headers installed to build.
 
 If you have these installed already you may need to install pkg-config so
 I can find them.
@@ -399,12 +399,13 @@
 fi
 
 if test "x$enable_gtkui" = "xyes" ; then
-	PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.0.0], , [
+	PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.4.0], , [
 		AC_MSG_RESULT(no)
 		AC_MSG_ERROR([
 
-You must have the GTK+ 2.0 development headers installed to compile Pidgin.
-If you want to build only Finch then specify --disable-gtkui when running configure.
+You must have GTK+ 2.4.0 or newer development headers installed to compile
+Pidgin.  If you want to build only Finch then specify --disable-gtkui when
+running configure.
 ])])
 
 	AC_SUBST(GTK_CFLAGS)
@@ -631,7 +632,8 @@
 		[ac_ncurses_includes="$withval"], [ac_ncurses_includes=""])
 if test "x$enable_consoleui" = "xyes"; then
 	AC_CHECK_LIB(ncursesw, initscr, [GNT_LIBS="-lncursesw"], [enable_consoleui=no])
-	AC_CHECK_LIB(panelw, update_panels, [GNT_LIBS="$GNT_LIBS -lpanelw"], [enable_consoleui=no])
+	AC_CHECK_LIB(panelw, update_panels, [GNT_LIBS="$GNT_LIBS -lpanelw"],
+	    [enable_consoleui=no], [$GNT_LIBS])
 
 	if test "x$enable_consoleui" = "xyes"; then
 		dnl # Some distros put the headers in ncursesw/, some don't
@@ -674,7 +676,8 @@
 		# ncursesw was not found. Look for plain old ncurses
 		enable_consoleui=yes
 		AC_CHECK_LIB(ncurses, initscr, [GNT_LIBS="-lncurses"], [enable_consoleui=no])
-		AC_CHECK_LIB(panel, update_panels, [GNT_LIBS="$GNT_LIBS -lpanel"], [enable_consoleui=no])
+		AC_CHECK_LIB(panel, update_panels, [GNT_LIBS="$GNT_LIBS -lpanel"],
+		    [enable_consoleui=no], [$GNT_LIBS])
 		AC_DEFINE(NO_WIDECHAR, 1, [Define to 1 if you don't have wide-character support.])
 		if test x"$ac_ncurses_includes" != "x"; then
 			GNT_CFLAGS="-I$ac_ncurses_includes"
@@ -792,13 +795,13 @@
 dnl #######################################################################
 AC_ARG_ENABLE(vv,
 	[AC_HELP_STRING([--disable-vv], [compile without voice and video support])],
-	[enable_vv="$enableval" force_vv=$enableval], [enable_vv="yes" force_vv=no])
+	enable_vv="$enableval", enable_vv="yes")
 if test "x$enable_vv" != "xno"; then
 	if test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farsight" != "xno"; then
 		AC_DEFINE(USE_VV, 1, [Use voice and video])
 	else
 		enable_vv="no"
-		if test "x$force_vv" = "xyes"; then
+		if test "x$force_deps" = "xyes"; then
 			AC_MSG_ERROR([
 Dependencies for voice/video were not met.
 Install the necessary gstreamer and farsight packages first.
@@ -807,6 +810,7 @@
 		fi
 	fi
 fi
+AM_CONDITIONAL(USE_VV, test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farsight" != "xno")
 
 AC_ARG_ENABLE(idn,
 	[AC_HELP_STRING([--disable-idn], [compile without IDN support])],
@@ -856,36 +860,39 @@
 	[AC_HELP_STRING([--disable-avahi],
 		[compile without avahi (required for Bonjour support)])],
 	enable_avahi="$enableval", enable_avahi="yes")
-AC_ARG_WITH(avahi-client-includes, [AC_HELP_STRING([--with-avahi-client-includes=DIR], [compile the Bonjour plugin against the Avahi Client includes in DIR])], [ac_avahi_client_includes="$withval"], [ac_avahi_client_includes="no"])
-AC_ARG_WITH(avahi-client-libs, [AC_HELP_STRING([--with-avahi-client-libs=DIR], [compile the Bonjour plugin against the Avahi Client libs in DIR])], [ac_avahi_client_libs="$withval"], [ac_avahi_client_libs="no"])
-AVAHI_CFLAGS=""
-AVAHI_LIBS=""
+
+if test "x$enable_avahi" = "xyes"; then
+	AC_ARG_WITH(avahi-client-includes, [AC_HELP_STRING([--with-avahi-client-includes=DIR], [compile the Bonjour plugin against the Avahi Client includes in DIR])], [ac_avahi_client_includes="$withval"], [ac_avahi_client_includes="no"])
+	AC_ARG_WITH(avahi-client-libs, [AC_HELP_STRING([--with-avahi-client-libs=DIR], [compile the Bonjour plugin against the Avahi Client libs in DIR])], [ac_avahi_client_libs="$withval"], [ac_avahi_client_libs="no"])
+	AVAHI_CFLAGS=""
+	AVAHI_LIBS=""
 
-dnl Attempt to autodetect Avahi
-PKG_CHECK_MODULES(AVAHI, [avahi-client avahi-glib], [
-	avahiincludes="yes"
-	avahilibs="yes"
-], [
-	avahiincludes="no"
-	avahilibs="no"
-])
+	dnl Attempt to autodetect Avahi
+	PKG_CHECK_MODULES(AVAHI, [avahi-client avahi-glib], [
+		avahiincludes="yes"
+		avahilibs="yes"
+	], [
+		avahiincludes="no"
+		avahilibs="no"
+	])
 
-dnl Override AVAHI_CFLAGS if the user specified an include dir
-if test "$ac_avahi_client_includes" != "no"; then
-	AVAHI_CFLAGS="-I$ac_avahi_client_includes"
+	dnl Override AVAHI_CFLAGS if the user specified an include dir
+	if test "$ac_avahi_client_includes" != "no"; then
+		AVAHI_CFLAGS="-I$ac_avahi_client_includes"
+	fi
+	CPPFLAGS_save="$CPPFLAGS"
+	CPPFLAGS="$CPPFLAGS $AVAHI_CFLAGS"
+	AC_CHECK_HEADER(avahi-client/client.h, [avahiincludes=yes], [avahiincludes=no])
+	CPPFLAGS="$CPPFLAGS $AVAHI_CFLAGS $GLIB_CFLAGS"
+	AC_CHECK_HEADER(avahi-glib/glib-malloc.h, [avahiincludes=yes], [avahiincludes=no])
+	CPPFLAGS="$CPPFLAGS_save"
+
+	dnl Override AVAHI_LIBS if the user specified a libs dir
+	if test "$ac_avahi_client_libs" != "no"; then
+		AVAHI_LIBS="-L$ac_avahi_client_libs -lavahi-common -lavahi-client -lavahi-glib "
+	fi
+	AC_CHECK_LIB(avahi-client, avahi_client_new, [avahilibs=yes], [avahilibs=no], $AVAHI_LIBS)
 fi
-CPPFLAGS_save="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $AVAHI_CFLAGS"
-AC_CHECK_HEADER(avahi-client/client.h, [avahiincludes=yes], [avahiincludes=no])
-CPPFLAGS="$CPPFLAGS $AVAHI_CFLAGS $GLIB_CFLAGS"
-AC_CHECK_HEADER(avahi-glib/glib-malloc.h, [avahiincludes=yes], [avahiincludes=no])
-CPPFLAGS="$CPPFLAGS_save"
-
-dnl Override AVAHI_LIBS if the user specified a libs dir
-if test "$ac_avahi_client_libs" != "no"; then
-	AVAHI_LIBS="-L$ac_avahi_client_libs -lavahi-common -lavahi-client -lavahi-glib "
-fi
-AC_CHECK_LIB(avahi-client, avahi_client_new, [avahilibs=yes], [avahilibs=no], $AVAHI_LIBS)
 
 if test "x$enable_avahi" = "xyes" -a "x$force_deps" = "xyes" -a \( "x$avahiincludes" = "xno" -o "x$avahilibs" = "xno" \); then
 	AC_MSG_ERROR([
--- a/finch/gntmedia.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/finch/gntmedia.c	Mon Aug 24 17:20:46 2009 +0900
@@ -156,7 +156,7 @@
 {
 	media->priv = FINCH_MEDIA_GET_PRIVATE(media);
 
-	media->priv->calling = gnt_label_new(_("Calling ... "));
+	media->priv->calling = gnt_label_new(_("Calling..."));
 	media->priv->hangup = gnt_button_new(_("Hangup"));
 	media->priv->accept = gnt_button_new(_("Accept"));
 	media->priv->reject = gnt_button_new(_("Reject"));
--- a/finch/libgnt/configure.ac	Wed Aug 19 16:19:45 2009 +0900
+++ b/finch/libgnt/configure.ac	Mon Aug 24 17:20:46 2009 +0900
@@ -24,11 +24,11 @@
 # Make sure to update ../../configure.ac with libgnt version changes.
 #
 
-m4_define([gnt_lt_current], [5])
+m4_define([gnt_lt_current], [6])
 m4_define([gnt_major_version], [2])
-m4_define([gnt_minor_version], [5])
-m4_define([gnt_micro_version], [0])
-m4_define([gnt_version_suffix], [])
+m4_define([gnt_minor_version], [6])
+m4_define([gnt_micro_version], [2])
+m4_define([gnt_version_suffix], [devel])
 m4_define([gnt_version],
           [gnt_major_version.gnt_minor_version.gnt_micro_version])
 m4_define([gnt_display_version], gnt_version[]m4_ifdef([gnt_version_suffix],[gnt_version_suffix]))
--- a/finch/plugins/gnttinyurl.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/finch/plugins/gnttinyurl.c	Mon Aug 24 17:20:46 2009 +0900
@@ -354,7 +354,7 @@
   frame = purple_plugin_pref_frame_new();
 
   pref = purple_plugin_pref_new_with_name(PREF_LENGTH);
-  purple_plugin_pref_set_label(pref, _("Only create TinyURL for urls"
+  purple_plugin_pref_set_label(pref, _("Only create TinyURL for URLs"
 				     " of this length or greater"));
   purple_plugin_pref_frame_add(frame, pref);
   pref = purple_plugin_pref_new_with_name(PREF_URL);
@@ -390,7 +390,7 @@
 	N_("TinyURL"),
 	DISPLAY_VERSION,
 	N_("TinyURL plugin"),
-	N_("When receiving a message with URL(s), TinyURL for easier copying"),
+	N_("When receiving a message with URL(s), use TinyURL for easier copying"),
 	"Richard Nelson <wabz@whatsbeef.net>",
 	PURPLE_WEBSITE,
 	plugin_load,
--- a/finch/plugins/grouping.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/finch/plugins/grouping.c	Mon Aug 24 17:20:46 2009 +0900
@@ -15,7 +15,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  */
 
 #define PURPLE_PLUGIN
--- a/libpurple/certificate.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/certificate.c	Mon Aug 24 17:20:46 2009 +0900
@@ -43,6 +43,91 @@
 /** List of registered Pools */
 static GList *cert_pools = NULL;
 
+/*
+ * TODO: Merge this with PurpleCertificateVerificationStatus for 3.0.0 */
+typedef enum {
+	PURPLE_CERTIFICATE_UNKNOWN_ERROR = -1,
+
+	/* Not an error */
+	PURPLE_CERTIFICATE_NO_PROBLEMS = 0,
+
+	/* Non-fatal */
+	PURPLE_CERTIFICATE_NON_FATALS_MASK = 0x0000FFFF,
+
+	/* The certificate is self-signed. */
+	PURPLE_CERTIFICATE_SELF_SIGNED = 0x01,
+
+	/* The CA is not in libpurple's pool of certificates. */
+	PURPLE_CERTIFICATE_CA_UNKNOWN = 0x02,
+
+	/* The current time is before the certificate's specified
+	 * activation time.
+	 */
+	PURPLE_CERTIFICATE_NOT_ACTIVATED = 0x04,
+
+	/* The current time is after the certificate's specified expiration time */
+	PURPLE_CERTIFICATE_EXPIRED = 0x08,
+
+	/* The certificate's subject name doesn't match the expected */
+	PURPLE_CERTIFICATE_NAME_MISMATCH = 0x10,
+
+	/* No CA pool was found. This shouldn't happen... */
+	PURPLE_CERTIFICATE_NO_CA_POOL = 0x20,
+
+	/* Fatal */
+	PURPLE_CERTIFICATE_FATALS_MASK = 0xFFFF0000,
+
+	/* The signature chain could not be validated. Due to limitations in the
+	 * the current API, this also indicates one of the CA certificates in the
+	 * chain is expired (or not yet activated). FIXME 3.0.0 */
+	PURPLE_CERTIFICATE_INVALID_CHAIN = 0x10000,
+
+	/* The signature has been revoked. */
+	PURPLE_CERTIFICATE_REVOKED = 0x20000,
+
+	PURPLE_CERTIFICATE_LAST = 0x40000,
+} PurpleCertificateInvalidityFlags;
+
+static const gchar *
+invalidity_reason_to_string(PurpleCertificateInvalidityFlags flag)
+{
+	switch (flag) {
+		case PURPLE_CERTIFICATE_SELF_SIGNED:
+			return _("The certificate is self-signed and cannot be "
+			         "automatically checked.");
+			break;
+		case PURPLE_CERTIFICATE_CA_UNKNOWN:
+			return _("The root certificate this one claims to be issued by is "
+			         "unknown to Pidgin.");
+			break;
+		case PURPLE_CERTIFICATE_NOT_ACTIVATED:
+			return _("The certificate is not valid yet.");
+			break;
+		case PURPLE_CERTIFICATE_EXPIRED:
+			return _("The certificate has expired and should not be "
+			         "considered valid.");
+			break;
+		case PURPLE_CERTIFICATE_NAME_MISMATCH:
+			/* Translators: "domain" refers to a DNS domain (e.g. talk.google.com) */
+			return _("The certificate presented is not issued to this domain.");
+			break;
+		case PURPLE_CERTIFICATE_NO_CA_POOL:
+			return _("You have no database of root certificates, so "
+			         "this certificate cannot be validated.");
+			break;
+		case PURPLE_CERTIFICATE_INVALID_CHAIN:
+			return _("The certificate chain presented is invalid.");
+			break;
+		case PURPLE_CERTIFICATE_REVOKED:
+			return _("The certificate has been revoked.");
+			break;
+		case PURPLE_CERTIFICATE_UNKNOWN_ERROR:
+		default:
+			return _("An unknown certificate error occurred.");
+			break;
+	}
+}
+
 void
 purple_certificate_verify (PurpleCertificateVerifier *verifier,
 			   const gchar *subject_name, GList *cert_chain,
@@ -1265,10 +1350,104 @@
 }
 
 static void
-x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq);
+x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq,
+                             PurpleCertificateInvalidityFlags flags);
 
 static void
-x509_tls_cached_cert_in_cache(PurpleCertificateVerificationRequest *vrq)
+x509_tls_cached_complete(PurpleCertificateVerificationRequest *vrq,
+                         PurpleCertificateInvalidityFlags flags)
+{
+	PurpleCertificatePool *tls_peers;
+	PurpleCertificate *peer_crt = vrq->cert_chain->data;
+
+	if (flags & PURPLE_CERTIFICATE_FATALS_MASK) {
+		/* TODO: Also print any other warnings? */
+		const gchar *error;
+		gchar *tmp, *secondary;
+
+		if (flags & PURPLE_CERTIFICATE_INVALID_CHAIN)
+			error = invalidity_reason_to_string(PURPLE_CERTIFICATE_INVALID_CHAIN);
+		else if (flags & PURPLE_CERTIFICATE_REVOKED)
+			error = invalidity_reason_to_string(PURPLE_CERTIFICATE_REVOKED);
+		else
+			error = invalidity_reason_to_string(PURPLE_CERTIFICATE_UNKNOWN_ERROR);
+
+		tmp = g_strdup_printf(_("The certificate for %s could not be validated."),
+					vrq->subject_name);
+		secondary = g_strconcat(tmp, " ", error, NULL);
+		g_free(tmp);
+
+		purple_notify_error(NULL, /* TODO: Probably wrong. */
+					_("SSL Certificate Error"),
+					_("Unable to validate certificate"),
+					secondary);
+		g_free(secondary);
+
+		purple_certificate_verify_complete(vrq, PURPLE_CERTIFICATE_INVALID);
+		return;
+	} else if (flags & PURPLE_CERTIFICATE_NON_FATALS_MASK) {
+		/* Non-fatal error. Prompt the user. */
+		gchar *tmp;
+		GString *errors;
+		guint32 i = 1;
+
+		tmp = g_strdup_printf(_("The certificate for %s could not be validated."),
+					vrq->subject_name);
+		errors = g_string_new(tmp);
+		g_free(tmp);
+
+		errors = g_string_append_c(errors, '\n');
+
+		/* Special case a name mismatch because we want to display the two names... */
+		if (flags & PURPLE_CERTIFICATE_NAME_MISMATCH) {
+			gchar *sn = purple_certificate_get_subject_name(peer_crt);
+
+			g_string_append_printf(errors, _("The certificate claims to be "
+						"from \"%s\" instead. This could mean that you are "
+						"not connecting to the service you believe you are."),
+						sn);
+			g_free(sn);
+
+			flags &= ~PURPLE_CERTIFICATE_NAME_MISMATCH;
+		}
+
+		while (i != PURPLE_CERTIFICATE_LAST) {
+			if (flags & i) {
+				errors = g_string_append_c(errors, '\n');
+				g_string_append(errors, invalidity_reason_to_string(i));
+			}
+
+			i <<= 1;
+		}
+
+		x509_tls_cached_user_auth(vrq, errors->str);
+		g_string_free(errors, TRUE);
+		return;
+	}
+
+	/* If we reach this point, the certificate is good. */
+
+	/* Look up the local cache and store it there for future use */
+	tls_peers = purple_certificate_find_pool(x509_tls_cached.scheme_name,
+						 "tls_peers");
+	if (tls_peers) {
+		if (!purple_certificate_pool_contains(tls_peers, vrq->subject_name) &&
+		        !purple_certificate_pool_store(tls_peers,vrq->subject_name,
+		                                       peer_crt)) {
+			purple_debug_error("certificate/x509/tls_cached",
+			                   "FAILED to cache peer certificate\n");
+		}
+	} else {
+		purple_debug_error("certificate/x509/tls_cached",
+		                   "Unable to locate tls_peers certificate cache.\n");
+	}
+
+	purple_certificate_verify_complete(vrq, PURPLE_CERTIFICATE_VALID);
+}
+
+static void
+x509_tls_cached_cert_in_cache(PurpleCertificateVerificationRequest *vrq,
+                              PurpleCertificateInvalidityFlags flags)
 {
 	/* TODO: Looking this up by name over and over is expensive.
 	   Fix, please! */
@@ -1291,7 +1470,7 @@
 				   "Lookup failed on cached certificate!\n"
 				   "Falling back to full verification.\n");
 		/* vrq now becomes the problem of unknown_peer */
-		x509_tls_cached_unknown_peer(vrq);
+		x509_tls_cached_unknown_peer(vrq, flags);
 		return;
 	}
 
@@ -1302,14 +1481,12 @@
 	if (!memcmp(peer_fpr->data, cached_fpr->data, peer_fpr->len)) {
 		purple_debug_info("certificate/x509/tls_cached",
 				  "Peer cert matched cached\n");
-		/* vrq is now finished */
-		purple_certificate_verify_complete(vrq,
-						   PURPLE_CERTIFICATE_VALID);
+		x509_tls_cached_complete(vrq, flags);
 	} else {
 		purple_debug_error("certificate/x509/tls_cached",
 				  "Peer cert did NOT match cached\n");
 		/* vrq now becomes the problem of the user */
-		x509_tls_cached_unknown_peer(vrq);
+		x509_tls_cached_unknown_peer(vrq, flags);
 	}
 
 	purple_certificate_destroy(cached_crt);
@@ -1324,9 +1501,8 @@
  */
 static void
 x509_tls_cached_check_subject_name(PurpleCertificateVerificationRequest *vrq,
-                                   gboolean had_ca_pool)
+                                   PurpleCertificateInvalidityFlags flags)
 {
-	PurpleCertificatePool *tls_peers;
 	PurpleCertificate *peer_crt;
 	GList *chain = vrq->cert_chain;
 
@@ -1337,77 +1513,14 @@
 						     vrq->subject_name) ) {
 		gchar *sn = purple_certificate_get_subject_name(peer_crt);
 
+		flags |= PURPLE_CERTIFICATE_NAME_MISMATCH;
 		purple_debug_error("certificate/x509/tls_cached",
 				  "Name mismatch: Certificate given for %s "
 				  "has a name of %s\n",
 				  vrq->subject_name, sn);
-
-		if (had_ca_pool) {
-			/* Prompt the user to authenticate the certificate */
-			/* TODO: Provide the user with more guidance about why he is
-			   being prompted */
-			/* vrq will be completed by user_auth */
-			gchar *msg;
-			msg = g_strdup_printf(_("The certificate presented by \"%s\" "
-						"claims to be from \"%s\" instead.  "
-						"This could mean that you are not "
-						"connecting to the service you "
-						"believe you are."),
-					      vrq->subject_name, sn);
-
-			x509_tls_cached_user_auth(vrq, msg);
-			g_free(msg);
-		} else {
-			/* Had no CA pool, so couldn't verify the chain *and*
-			 * the subject name isn't valid.
-			 * I think this is bad enough to warrant a fatal error. It's
-			 * not likely anyway...
-			 */
-			purple_notify_error(NULL, /* TODO: Probably wrong. */
-						_("SSL Certificate Error"),
-						_("Invalid certificate chain"),
-						_("You have no database of root certificates, so "
-						"this certificate cannot be validated."));
-		}
-
-		g_free(sn);
-		return;
-	} /* if (name mismatch) */
-
-	if (!had_ca_pool) {
-		/* The subject name is correct, but we weren't able to verify the
-		 * chain because there was no pool of root CAs found. Prompt the user
-		 * to validate it.
-		 */
-
-		/* vrq will be completed by user_auth */
-		x509_tls_cached_user_auth(vrq,_("You have no database of root "
-						"certificates, so this "
-						"certificate cannot be "
-						"validated."));
-		return;
 	}
 
-	/* If we reach this point, the certificate is good. */
-	/* Look up the local cache and store it there for future use */
-	tls_peers = purple_certificate_find_pool(x509_tls_cached.scheme_name,
-						 "tls_peers");
-
-	if (tls_peers) {
-		if (!purple_certificate_pool_store(tls_peers,vrq->subject_name,
-						   peer_crt) ) {
-			purple_debug_error("certificate/x509/tls_cached",
-					   "FAILED to cache peer certificate\n");
-		}
-	} else {
-		purple_debug_error("certificate/x509/tls_cached",
-				   "Unable to locate tls_peers certificate "
-				   "cache.\n");
-	}
-
-	/* Whew! Done! */
-	purple_certificate_verify_complete(vrq, PURPLE_CERTIFICATE_VALID);
-
+	x509_tls_cached_complete(vrq, flags);
 }
 
 /* For when we've never communicated with this party before */
@@ -1415,7 +1528,8 @@
    least  reprioritize them.
  */
 static void
-x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq)
+x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq,
+                             PurpleCertificateInvalidityFlags flags)
 {
 	PurpleCertificatePool *ca;
 	PurpleCertificate *peer_crt;
@@ -1430,22 +1544,13 @@
 	/* TODO: Figure out a way to check for a bad signature, as opposed to
 	   "not self-signed" */
 	if ( purple_certificate_signed_by(peer_crt, peer_crt) ) {
-		gchar *msg;
+		flags |= PURPLE_CERTIFICATE_SELF_SIGNED;
 
 		purple_debug_info("certificate/x509/tls_cached",
 				  "Certificate for %s is self-signed.\n",
 				  vrq->subject_name);
 
-		/* Prompt the user to authenticate the certificate */
-		/* vrq will be completed by user_auth */
-		msg = g_strdup_printf(_("The certificate presented by \"%s\" "
-					"is self-signed. It cannot be "
-					"automatically checked."),
-				      vrq->subject_name);
-
-		x509_tls_cached_user_auth(vrq,msg);
-
-		g_free(msg);
+		x509_tls_cached_check_subject_name(vrq, flags);
 		return;
 	} /* if (self signed) */
 
@@ -1491,32 +1596,11 @@
 		 * If we get here, either the cert matched the stuff right above
 		 * or it didn't, in which case we give up and complain to the user.
 		 */
-		if (chain_validated) {
-			x509_tls_cached_check_subject_name(vrq, TRUE);
-		} else {
+		if (!chain_validated)
 			/* TODO: Tell the user where the chain broke? */
-			/* TODO: This error will hopelessly confuse any
-			   non-elite user. */
-			gchar *secondary;
-
-			secondary = g_strdup_printf(_("The certificate chain presented"
-						      " for %s is not valid."),
-						    vrq->subject_name);
+			flags |= PURPLE_CERTIFICATE_INVALID_CHAIN;
 
-			/* TODO: Make this error either block the ensuing SSL
-			   connection error until the user dismisses this one, or
-			   stifle it. */
-			purple_notify_error(NULL, /* TODO: Probably wrong. */
-					    _("SSL Certificate Error"),
-					    _("Invalid certificate chain"),
-					    secondary );
-			g_free(secondary);
-
-			/* Okay, we're done here */
-			purple_certificate_verify_complete(vrq,
-							   PURPLE_CERTIFICATE_INVALID);
-		}
-
+		x509_tls_cached_check_subject_name(vrq, flags);
 		return;
 	} /* if (signature chain not good) */
 
@@ -1527,7 +1611,9 @@
 				   "No X.509 Certificate Authority pool "
 				   "could be found!\n");
 
-		x509_tls_cached_check_subject_name(vrq, FALSE);
+		flags |= PURPLE_CERTIFICATE_NO_CA_POOL;
+
+		x509_tls_cached_check_subject_name(vrq, flags);
 		return;
 	}
 
@@ -1540,15 +1626,15 @@
 			  ca_id);
 	ca_crt = purple_certificate_pool_retrieve(ca, ca_id);
 	if ( NULL == ca_crt ) {
+		flags |= PURPLE_CERTIFICATE_CA_UNKNOWN;
+
 		purple_debug_warning("certificate/x509/tls_cached",
 				  "Certificate Authority with DN='%s' not "
 				  "found. I'll prompt the user, I guess.\n",
 				  ca_id);
 		g_free(ca_id);
-		/* vrq will be completed by user_auth */
-		x509_tls_cached_user_auth(vrq,_("The root certificate this "
-						"one claims to be issued by "
-						"is unknown to Pidgin."));
+
+		x509_tls_cached_check_subject_name(vrq, flags);
 		return;
 	}
 
@@ -1579,36 +1665,15 @@
 		/* TODO: Also mention the CA involved. While I could do this
 		   now, a full DN is a little much with which to assault the
 		   user's poor, leaky eyes. */
-		/* TODO: This error message makes my eyes cross, and I wrote it */
-		gchar * secondary =
-			g_strdup_printf(_("The certificate chain presented by "
-					  "%s does not have a valid digital "
-					  "signature from the Certificate "
-					  "Authority from which it claims to "
-					  "have a signature."),
-					vrq->subject_name);
-
-		purple_notify_error(NULL, /* TODO: Probably wrong */
-				    _("SSL Certificate Error"),
-				    _("Invalid certificate authority"
-				      " signature"),
-				    secondary);
-		g_free(secondary);
-
-		/* Signal "bad cert" */
-		purple_certificate_verify_complete(vrq,
-						   PURPLE_CERTIFICATE_INVALID);
-
-		purple_certificate_destroy(ca_crt);
-		g_byte_array_free(ca_fpr, TRUE);
-		g_byte_array_free(last_fpr, TRUE);
-		return;
-	} /* if (CA signature not good) */
+		flags |= PURPLE_CERTIFICATE_INVALID_CHAIN;
+	}
 
 	g_byte_array_free(ca_fpr, TRUE);
 	g_byte_array_free(last_fpr, TRUE);
 
-	x509_tls_cached_check_subject_name(vrq, TRUE);
+	purple_certificate_destroy(ca_crt);
+
+	x509_tls_cached_check_subject_name(vrq, flags);
 }
 
 static void
@@ -1617,6 +1682,7 @@
 	const gchar *tls_peers_name = "tls_peers"; /* Name of local cache */
 	PurpleCertificatePool *tls_peers;
 	time_t now, activation, expiration;
+	PurpleCertificateInvalidityFlags flags = PURPLE_CERTIFICATE_NO_PROBLEMS;
 	gboolean ret;
 
 	g_return_if_fail(vrq);
@@ -1632,37 +1698,21 @@
 	now = time(NULL);
 	ret = purple_certificate_get_times(vrq->cert_chain->data, &activation,
 	                                   &expiration);
-	if (!ret || now > expiration || now < activation) {
-		gchar *secondary;
-
-		if (!ret)
-			purple_debug_error("certificate/x509/tls_cached",
-					"Failed to get validity times for certificate %s\n",
-					vrq->subject_name);
-		else if (now > expiration)
-			purple_debug_error("certificate/x509/tls_cached",
-					"Certificate %s expired at %s\n",
-					vrq->subject_name, ctime(&expiration));
-		else
-			purple_debug_error("certificate/x509/tls_cached",
-					"Certificate %s is not yet valid, will be at %s\n",
-					vrq->subject_name, ctime(&activation));
-
-		/* FIXME 2.6.1 */
-		secondary = g_strdup_printf(_("The certificate chain presented"
-					" for %s is not valid."),
-					vrq->subject_name);
-
-		purple_notify_error(NULL, /* TODO: Probably wrong. */
-					_("SSL Certificate Error"),
-					_("Invalid certificate chain"),
-					secondary );
-		g_free(secondary);
-
-		/* Okay, we're done here */
-		purple_certificate_verify_complete(vrq,
-						    PURPLE_CERTIFICATE_INVALID);
-		return;
+	if (!ret) {
+		flags |= PURPLE_CERTIFICATE_EXPIRED | PURPLE_CERTIFICATE_NOT_ACTIVATED;
+		purple_debug_error("certificate/x509/tls_cached",
+				"Failed to get validity times for certificate %s\n",
+				vrq->subject_name);
+	} else if (now > expiration) {
+		flags |= PURPLE_CERTIFICATE_EXPIRED;
+		purple_debug_error("certificate/x509/tls_cached",
+				"Certificate %s expired at %s\n",
+				vrq->subject_name, ctime(&expiration));
+	} else if (now < activation) {
+		flags |= PURPLE_CERTIFICATE_NOT_ACTIVATED;
+		purple_debug_error("certificate/x509/tls_cached",
+				"Certificate %s is not yet valid, will be at %s\n",
+				vrq->subject_name, ctime(&activation));
 	}
 
 	tls_peers = purple_certificate_find_pool(x509_tls_cached.scheme_name,tls_peers_name);
@@ -1672,9 +1722,8 @@
 				   "Couldn't find local peers cache %s\n",
 				   tls_peers_name);
 
-
 		/* vrq now becomes the problem of unknown_peer */
-		x509_tls_cached_unknown_peer(vrq);
+		x509_tls_cached_unknown_peer(vrq, flags);
 		return;
 	}
 
@@ -1685,12 +1734,12 @@
 		purple_debug_info("certificate/x509/tls_cached",
 				  "...Found cached cert\n");
 		/* vrq is now the responsibility of cert_in_cache */
-		x509_tls_cached_cert_in_cache(vrq);
+		x509_tls_cached_cert_in_cache(vrq, flags);
 	} else {
 		purple_debug_warning("certificate/x509/tls_cached",
 				  "...Not in cache\n");
 		/* vrq now becomes the problem of unknown_peer */
-		x509_tls_cached_unknown_peer(vrq);
+		x509_tls_cached_unknown_peer(vrq, flags);
 	}
 }
 
--- a/libpurple/dbus-analyze-functions.py	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/dbus-analyze-functions.py	Mon Aug 24 17:20:46 2009 +0900
@@ -181,15 +181,20 @@
 
    
     def processoutput(self, type, name):
+        const = False
+        unsigned = False
         # the "void" type is simple ...
         if type == ["void"]:
             return self.outputvoid(type, name)
 
-        const = False
         if type[0] == "const":
             type = type[1:]
             const = True
 
+        if type[0] == "unsigned":
+            type = type[1:]
+            unsigned = True
+
         # a string
         if type == ["char", pointer] or type == ["gchar", pointer]:
             return self.outputstring(type, name, const)
@@ -197,7 +202,7 @@
         # simple types (ints, booleans, enums, ...)
         if (len(type) == 1) and \
                ((type[0] in simpletypes) or (type[0].startswith("Purple"))):
-            return self.outputsimple(type, name)
+            return self.outputsimple(type, name, unsigned)
 
         # pointers ...
         if (len(type) == 2) and (type[1] == pointer):
@@ -303,10 +308,13 @@
 #        self.returncode.append("NULLIFY(%s);" % name)
         self.returncode.append("return %s;" % name);
 
-    def outputsimple(self, type, name):
+    def outputsimple(self, type, name, us):
         self.functiontype = type[0]
         self.decls.append("%s %s = 0;" % (type[0], name))
-        self.outputparams.append(("G_TYPE_INT", name))
+        if us:
+            self.outputparams.append(("G_TYPE_UINT", name))
+        else:
+            self.outputparams.append(("G_TYPE_INT", name))
         self.returncode.append("return %s;" % name);
 
     # we could add "const" to the return type but this would probably
@@ -455,11 +463,16 @@
         if not const:
             self.ccodeout.append("\tg_free(%s);" % name)
 
-    def outputsimple(self, type, name):
-        self.cdecls.append("\tdbus_int32_t %s;" % name)
+    def outputsimple(self, type, name, us):
+        if us:
+            self.cdecls.append("\tdbus_uint32_t %s;" % name)
+            self.cparamsout.append(("UINT32", name))
+            self.addouttype("u", name)
+        else:
+            self.cdecls.append("\tdbus_int32_t %s;" % name)
+            self.cparamsout.append(("INT32", name))
+            self.addouttype("i", name)
         self.ccode.append("\t%s = %s;" % (name, self.call))
-        self.cparamsout.append(("INT32", name))
-        self.addouttype("i", name)
 
     def outputpurplestructure(self, type, name):
         self.cdecls.append("\tdbus_int32_t %s;" % name)
--- a/libpurple/dnssrv.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/dnssrv.c	Mon Aug 24 17:20:46 2009 +0900
@@ -465,9 +465,16 @@
 {
 	PurpleSrvResponse *srvres = NULL;
 	PurpleSrvQueryData *query_data = data;
-	if(query_data->error_message != NULL)
+	if(query_data->error_message != NULL) {
 		purple_debug_error("dnssrv", query_data->error_message);
-	else {
+		if (query_data->type == DNS_TYPE_SRV) {
+			if (query_data->cb.srv)
+				query_data->cb.srv(srvres, 0, query_data->extradata);
+		} else if (query_data->type == DNS_TYPE_TXT) {
+			if (query_data->cb.txt)
+				query_data->cb.txt(NULL, query_data->extradata);
+		}
+	} else {
 		if (query_data->type == DNS_TYPE_SRV) {
 			PurpleSrvResponse *srvres_tmp = NULL;
 			GList *lst = query_data->results;
--- a/libpurple/ft.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/ft.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1313,7 +1313,7 @@
 
 	if (purple_xfer_get_filename(xfer) != NULL)
 	{
-		msg = g_strdup_printf(_("You canceled the transfer of %s"),
+		msg = g_strdup_printf(_("You cancelled the transfer of %s"),
 							  purple_xfer_get_filename(xfer));
 	}
 	else
@@ -1376,12 +1376,12 @@
 
 	if (purple_xfer_get_filename(xfer) != NULL)
 	{
-		msg = g_strdup_printf(_("%s canceled the transfer of %s"),
+		msg = g_strdup_printf(_("%s cancelled the transfer of %s"),
 				buddy ? purple_buddy_get_alias(buddy) : xfer->who, purple_xfer_get_filename(xfer));
 	}
 	else
 	{
-		msg = g_strdup_printf(_("%s canceled the file transfer"),
+		msg = g_strdup_printf(_("%s cancelled the file transfer"),
 				buddy ? purple_buddy_get_alias(buddy) : xfer->who);
 	}
 	purple_xfer_conversation_write(xfer, msg, TRUE);
--- a/libpurple/media-gst.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/media-gst.h	Mon Aug 24 17:20:46 2009 +0900
@@ -21,7 +21,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
 #ifndef _PURPLE_MEDIA_GST_H_
--- a/libpurple/media.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/media.c	Mon Aug 24 17:20:46 2009 +0900
@@ -21,7 +21,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
 #include <string.h>
@@ -2129,6 +2129,35 @@
 			}
 			break;
 		}
+		case GST_MESSAGE_ERROR: {
+			GstElement *element = GST_ELEMENT(GST_MESSAGE_SRC(msg));
+			GstElement *lastElement = NULL;
+			while (!GST_IS_PIPELINE(element)) {
+				if (element == media->priv->confbin) {
+					purple_media_error("media", _("Conference error."));
+					purple_media_end(media, NULL, NULL);
+					break;
+				}
+				lastElement = element;
+				element = GST_ELEMENT_PARENT(element);
+			}
+			if (GST_IS_PIPELINE(element)) {
+				GList *sessions = g_hash_table_get_values(media->priv->sessions);
+				for (; sessions; sessions = g_list_delete_link(sessions, sessions)) {
+					PurpleMediaSession *session = sessions->data;
+
+					if (session->src == lastElement) {
+						if (session->type & PURPLE_MEDIA_AUDIO)
+							purple_media_error(media, _("Error with your microphone."));
+						else
+							purple_media_error(media, _("Error with your webcam."));
+						purple_media_end(media, NULL, NULL);
+						break;
+					}
+				}
+				g_list_free(sessions);
+			}
+		}
 		default:
 			break;
 	}
@@ -2730,10 +2759,13 @@
 					num_params, params, &err);
 		}
 
-		if (err) {
-			purple_debug_error("media", "Error creating stream: %s\n",
-					   err->message);
-			g_error_free(err);
+		if (fsstream == NULL) {
+			purple_debug_error("media",
+					"Error creating stream: %s\n",
+					err && err->message ?
+					err->message : "NULL");
+			if (err)
+				g_error_free(err);
 			g_object_unref(participant);
 			g_hash_table_remove(media->priv->participants, who);
 			purple_media_remove_session(media, session);
--- a/libpurple/media.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/media.h	Mon Aug 24 17:20:46 2009 +0900
@@ -21,7 +21,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
 #ifndef _PURPLE_MEDIA_H_
--- a/libpurple/mediamanager.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/mediamanager.c	Mon Aug 24 17:20:46 2009 +0900
@@ -21,7 +21,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
 #include "internal.h"
--- a/libpurple/mediamanager.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/mediamanager.h	Mon Aug 24 17:20:46 2009 +0900
@@ -21,7 +21,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
 #ifndef _PURPLE_MEDIA_MANAGER_H_
--- a/libpurple/plugins/joinpart.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/plugins/joinpart.c	Mon Aug 24 17:20:46 2009 +0900
@@ -229,16 +229,17 @@
 
 	frame = purple_plugin_pref_frame_new();
 
-	ppref = purple_plugin_pref_new_with_label(_("Join/Part Hiding Configuration"));
+	ppref = purple_plugin_pref_new_with_label(_("Hide Joins/Parts"));
 	purple_plugin_pref_frame_add(frame, ppref);
 
 	ppref = purple_plugin_pref_new_with_name_and_label(THRESHOLD_PREF,
-	                                                 _("Minimum Room Size"));
+	                                                 /* Translators: Followed by an input request a number of people */
+	                                                 _("For rooms with more than this many people"));
 	purple_plugin_pref_set_bounds(ppref, 0, 1000);
 	purple_plugin_pref_frame_add(frame, ppref);
 
 	ppref = purple_plugin_pref_new_with_name_and_label(DELAY_PREF,
-	                                                 _("User Inactivity Timeout (in minutes)"));
+	                                                 _("If user has not spoken in this many minutes"));
 	purple_plugin_pref_set_bounds(ppref, 0, 8 * 60); /* 8 Hours */
 	purple_plugin_pref_frame_add(frame, ppref);
 
--- a/libpurple/protocols/bonjour/bonjour_ft.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/bonjour/bonjour_ft.c	Mon Aug 24 17:20:46 2009 +0900
@@ -17,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  */
 #include "internal.h"
 #include "util.h"
--- a/libpurple/protocols/bonjour/bonjour_ft.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/bonjour/bonjour_ft.h	Mon Aug 24 17:20:46 2009 +0900
@@ -17,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  */
 #ifndef _BONJOUR_FT_H_
 #define _BONJOUR_FT_H_
--- a/libpurple/protocols/jabber/adhoccommands.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/adhoccommands.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/adhoccommands.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/adhoccommands.h	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/auth.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/auth.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/auth.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/auth.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/bosh.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/bosh.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2008, Tobias Markmann <tmarkmann@googlemail.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/bosh.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/bosh.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2008, Tobias Markmann <tmarkmann@googlemail.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/buddy.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/buddy.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -749,7 +751,9 @@
 		const char *status_name = jabber_buddy_state_get_name(jbr->state);
 
 		if (jbr->status) {
-			purdy = purple_strdup_withhtml(jbr->status);
+			tmp = purple_markup_escape_text(jbr->status, -1);
+			purdy = purple_strdup_withhtml(tmp);
+			g_free(tmp);
 
 			if (purple_strequal(status_name, purdy))
 				status_name = NULL;
@@ -908,12 +912,14 @@
 	             (binval = xmlnode_get_child(photo, "BINVAL"))) {
 		gsize size;
 		char *bintext = xmlnode_get_data(binval);
-		guchar *data = purple_base64_decode(bintext, &size);
-		g_free(bintext);
+		if (bintext) {
+			guchar *data = purple_base64_decode(bintext, &size);
+			g_free(bintext);
 
-		if (data) {
-			vcard_hash = jabber_calculate_data_sha1sum(data, size);
-			g_free(data);
+			if (data) {
+				vcard_hash = jabber_calculate_data_sha1sum(data, size);
+				g_free(data);
+			}
 		}
 	}
 
@@ -1675,21 +1681,42 @@
 	jabber_buddy_set_invisibility(js, purple_buddy_get_name(buddy), FALSE);
 }
 
-static void jabber_buddy_cancel_presence_notification(PurpleBlistNode *node,
-		gpointer data)
+static void cancel_presence_notification(gpointer data)
 {
 	PurpleBuddy *buddy;
 	PurpleConnection *gc;
 	JabberStream *js;
 
+	buddy = data;
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+	js = purple_connection_get_protocol_data(gc);
+
+	jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "unsubscribed");
+}
+
+static void
+jabber_buddy_cancel_presence_notification(PurpleBlistNode *node,
+                                          gpointer data)
+{
+	PurpleBuddy *buddy;
+	PurpleAccount *account;
+	PurpleConnection *gc;
+	const gchar *name;
+	char *msg;
+
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
-	js = purple_connection_get_protocol_data(gc);
+	name = purple_buddy_get_name(buddy);
+	account = purple_buddy_get_account(buddy);
+	gc = purple_account_get_connection(account);
 
-	/* I wonder if we should prompt the user before doing this */
-	jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "unsubscribed");
+	msg = g_strdup_printf(_("%s will no longer be able to see your status "
+	                        "updates.  Do you want to continue?"), name);
+	purple_request_yes_no(gc, NULL, _("Cancel Presence Notification"),
+	                      msg, 0 /* Yes */, account, name, NULL, buddy,
+	                      cancel_presence_notification, NULL /* Do nothing */);
+	g_free(msg);
 }
 
 static void jabber_buddy_rerequest_auth(PurpleBlistNode *node, gpointer data)
--- a/libpurple/protocols/jabber/buddy.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/buddy.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/caps.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/caps.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
@@ -468,8 +470,10 @@
 		}
 
 		if (!hash || strcmp(hash, userdata->ver)) {
-			purple_debug_warning("jabber", "Could not validate caps info from %s\n",
-			                     xmlnode_get_attrib(packet, "from"));
+			purple_debug_warning("jabber", "Could not validate caps info from "
+			                     "%s. Expected %s, got %s\n",
+			                     xmlnode_get_attrib(packet, "from"),
+			                     userdata->ver, hash ? hash : "(null)");
 
 			userdata->cb(NULL, NULL, userdata->cb_data);
 			jabber_caps_client_info_destroy(info);
--- a/libpurple/protocols/jabber/caps.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/caps.h	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/chat.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/chat.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/chat.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/chat.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/data.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/data.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,4 +1,8 @@
 /*
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
@@ -11,7 +15,7 @@
  *
  * 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., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301,  USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
 #include <stdlib.h>
--- a/libpurple/protocols/jabber/data.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/data.h	Mon Aug 24 17:20:46 2009 +0900
@@ -1,4 +1,8 @@
 /*
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
@@ -11,7 +15,7 @@
  *
  * 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., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301,  USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
 #ifndef PURPLE_JABBER_DATA_H
--- a/libpurple/protocols/jabber/disco.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/disco.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Service Discovery
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/disco.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/disco.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/google.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/google.c	Mon Aug 24 17:20:46 2009 +0900
@@ -92,20 +92,6 @@
 }
 
 static void
-google_session_send_terminate(GoogleSession *session)
-{
-	xmlnode *sess;
-	JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET);
-
-	xmlnode_set_attrib(iq->node, "to", session->remote_jid);
-	sess = google_session_create_xmlnode(session, "terminate");
-	xmlnode_insert_child(iq->node, sess);
-
-	jabber_iq_send(iq);
-	google_session_destroy(session);
-}
-
-static void
 google_session_send_candidates(PurpleMedia *media, gchar *session_id,
 		gchar *participant, GoogleSession *session)
 {
@@ -399,6 +385,16 @@
 
 	purple_media_set_prpl_data(session->media, session);
 
+	g_signal_connect_swapped(G_OBJECT(session->media),
+			"candidates-prepared",
+			G_CALLBACK(google_session_ready), session);
+	g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed",
+			G_CALLBACK(google_session_ready), session);
+	g_signal_connect(G_OBJECT(session->media), "state-changed",
+			G_CALLBACK(google_session_state_changed_cb), session);
+	g_signal_connect(G_OBJECT(session->media), "stream-info",
+			G_CALLBACK(google_session_stream_info_cb), session);
+
 	params = jabber_google_session_get_params(js, &num_params);
 
 	if (purple_media_add_stream(session->media, "google-voice",
@@ -409,23 +405,11 @@
 			session->remote_jid, PURPLE_MEDIA_VIDEO,
 			TRUE, "nice", num_params, params) == FALSE)) {
 		purple_media_error(session->media, "Error adding stream.");
-		purple_media_stream_info(session->media,
-				PURPLE_MEDIA_INFO_HANGUP, NULL, NULL, TRUE);
-		google_session_destroy(session);
+		purple_media_end(session->media, NULL, NULL);
 		g_free(params);
 		return FALSE;
 	}
 
-	g_signal_connect_swapped(G_OBJECT(session->media),
-			"candidates-prepared",
-			G_CALLBACK(google_session_ready), session);
-	g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed",
-			G_CALLBACK(google_session_ready), session);
-	g_signal_connect(G_OBJECT(session->media), "state-changed",
-			G_CALLBACK(google_session_state_changed_cb), session);
-	g_signal_connect(G_OBJECT(session->media), "stream-info",
-			G_CALLBACK(google_session_stream_info_cb), session);
-
 	g_free(params);
 
 	return (session->media != NULL) ? TRUE : FALSE;
@@ -467,6 +451,16 @@
 
 	purple_media_set_prpl_data(session->media, session);
 
+	g_signal_connect_swapped(G_OBJECT(session->media),
+			"candidates-prepared",
+			G_CALLBACK(google_session_ready), session);
+	g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed",
+			G_CALLBACK(google_session_ready), session);
+	g_signal_connect(G_OBJECT(session->media), "state-changed",
+			G_CALLBACK(google_session_state_changed_cb), session);
+	g_signal_connect(G_OBJECT(session->media), "stream-info",
+			G_CALLBACK(google_session_stream_info_cb), session);
+
 	params = jabber_google_session_get_params(js, &num_params);
 
 	if (purple_media_add_stream(session->media, "google-voice",
@@ -478,8 +472,7 @@
 			FALSE, "nice", num_params, params) == FALSE)) {
 		purple_media_error(session->media, "Error adding stream.");
 		purple_media_stream_info(session->media,
-				PURPLE_MEDIA_INFO_HANGUP, NULL, NULL, TRUE);
-		google_session_send_terminate(session);
+				PURPLE_MEDIA_INFO_REJECT, NULL, NULL, TRUE);
 		g_free(params);
 		return FALSE;
 	}
@@ -536,18 +529,6 @@
 	purple_media_codec_list_free(codecs);
 	purple_media_codec_list_free(video_codecs);
 
-	g_signal_connect_swapped(G_OBJECT(session->media), "accepted",
-			G_CALLBACK(google_session_ready), session);
-	g_signal_connect_swapped(G_OBJECT(session->media),
-			"candidates-prepared",
-			G_CALLBACK(google_session_ready), session);
-	g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed",
-			G_CALLBACK(google_session_ready), session);
-	g_signal_connect(G_OBJECT(session->media), "state-changed",
-			G_CALLBACK(google_session_state_changed_cb), session);
-	g_signal_connect(G_OBJECT(session->media), "stream-info",
-			G_CALLBACK(google_session_stream_info_cb), session);
-
 	result = jabber_iq_new(js, JABBER_IQ_RESULT);
 	jabber_iq_set_id(result, iq_id);
 	xmlnode_set_attrib(result->node, "to", session->remote_jid);
@@ -779,8 +760,7 @@
 	session->js = js;
 	session->remote_jid = g_strdup(session->id.initiator);
 
-	if (!google_session_handle_initiate(js, session, session_node, iq_id))
-		google_session_destroy(session);
+	google_session_handle_initiate(js, session, session_node, iq_id);
 }
 #endif /* USE_VV */
 
@@ -1320,6 +1300,7 @@
 		purple_debug_error("jabber", "Google STUN lookup failed: %s\n",
 			error_message);
 		g_slist_free(hosts);
+		js->stun_query = NULL;
 		return;
 	}
 
@@ -1338,18 +1319,16 @@
 			port = ntohs(((struct sockaddr_in *) addr)->sin_port);
 		}
 
-		if (js) {
-			if (js->stun_ip) {
-				g_free(js->stun_ip);
-			}
-			js->stun_ip = g_strdup(dst);
-			purple_debug_info("jabber", "set Google STUN IP address: %s\n", dst);
-			js->stun_port = port;
-			purple_debug_info("jabber", "set Google STUN port: %d\n", port);
-			purple_debug_info("jabber", "set Google STUN port: %d\n", port);
-			/* unmark ongoing query */
-			js->stun_query = NULL;
-		}
+		if (js->stun_ip)
+			g_free(js->stun_ip);
+		js->stun_ip = g_strdup(dst);
+		js->stun_port = port;
+
+		purple_debug_info("jabber", "set Google STUN IP/port address: "
+		                  "%s:%d\n", dst, port);
+
+		/* unmark ongoing query */
+		js->stun_query = NULL;
 	}
 
 	while (hosts != NULL) {
--- a/libpurple/protocols/jabber/ibb.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/ibb.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,4 +1,8 @@
 /*
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
@@ -11,7 +15,7 @@
  *
  * 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., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301,  USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
 #include "internal.h"
--- a/libpurple/protocols/jabber/ibb.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/ibb.h	Mon Aug 24 17:20:46 2009 +0900
@@ -1,4 +1,8 @@
 /*
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
@@ -11,7 +15,7 @@
  *
  * 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., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301,  USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
 #ifndef PURPLE_JABBER_IBB_H_
--- a/libpurple/protocols/jabber/iq.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/iq.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/iq.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/iq.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/jabber.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jabber.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -3305,7 +3307,7 @@
 	                  PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
 	                  PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
 	                  jabber_cmd_chat_role,
-	                  _("role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the users with an role or set users' role with the room."),
+	                  _("role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the users with a role or set users' role with the room."),
 	                  NULL);
 	jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
 
--- a/libpurple/protocols/jabber/jabber.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jabber.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/jingle/content.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/content.c	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/content.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/content.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/iceudp.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/iceudp.c	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/iceudp.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/iceudp.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/jingle.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/jingle.c	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple - Jabber Protocol Plugin
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/jingle.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/jingle.h	Mon Aug 24 17:20:46 2009 +0900
@@ -1,6 +1,10 @@
 /*
  * @file jingle.h
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/rawudp.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/rawudp.c	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/rawudp.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/rawudp.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/rtp.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/rtp.c	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
@@ -607,8 +611,11 @@
 		is_creator = !jingle_session_is_initiator(session);
 	g_free(creator);
 
-	purple_media_add_stream(media, name, remote_jid,
-			type, is_creator, transmitter, num_params, params);
+	if(!purple_media_add_stream(media, name, remote_jid,
+			type, is_creator, transmitter, num_params, params)) {
+		purple_media_end(media, NULL, NULL);
+		return FALSE;
+	}
 
 	g_free(name);
 	g_free(media_type);
--- a/libpurple/protocols/jabber/jingle/rtp.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/rtp.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/session.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/session.c	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/session.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/session.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/transport.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/transport.c	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jingle/transport.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jingle/transport.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,6 +3,10 @@
  *
  * purple
  *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
  * 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
--- a/libpurple/protocols/jabber/jutil.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jutil.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -504,8 +506,23 @@
 	JabberStream *js = gc ? gc->proto_data : NULL;
 	static char buf[3072]; /* maximum legal length of a jabber jid */
 	JabberID *jid;
+	char *tmp;
+	size_t len = strlen(in);
 
-	jid = jabber_id_new(in);
+	/*
+	 * If the JID ends with a '/', jabber_id_new is going to throw it away as
+	 * invalid.  However, this is what the UI generates for a JID with no
+	 * resource. Deal with that by dropping away the '/'...
+	 */
+	if (in[len - 1] == '/')
+		tmp = g_strndup(in, len - 1);
+	else
+		tmp = (gchar *)in;
+
+	jid = jabber_id_new(tmp);
+
+	if (tmp != in)
+		g_free(tmp);
 
 	if(!jid)
 		return NULL;
--- a/libpurple/protocols/jabber/jutil.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/jutil.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/message.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/message.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -87,8 +89,12 @@
 	}
 
 	if(!jm->xhtml && !jm->body) {
-		if (jbr)
-			jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED;
+		if (jbr) {
+			if (jm->chat_state != JM_STATE_NONE)
+				jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED;
+			else
+				jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED;
+		}
 
 		if(JM_STATE_COMPOSING == jm->chat_state) {
 			serv_got_typing(jm->js->gc, from, 0, PURPLE_TYPING);
--- a/libpurple/protocols/jabber/message.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/message.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/oob.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/oob.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/oob.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/oob.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/parser.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/parser.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber XML parser stuff
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/parser.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/parser.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/pep.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/pep.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/pep.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/pep.h	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/ping.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/ping.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -16,7 +18,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/ping.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/ping.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -17,7 +19,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 #ifndef PURPLE_JABBER_PING_H_
 #define PURPLE_JABBER_PING_H_
--- a/libpurple/protocols/jabber/presence.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/presence.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -469,10 +471,17 @@
 		jbr->commands_fetched = TRUE;
 	}
 
+#if 0
+	/*
+	 * Versions of libpurple before 2.6.0 didn't advertise this capability, so
+	 * we can't yet use Entity Capabilities to determine whether or not the
+	 * other client supports Entity Capabilities.
+	 */
 	if (jabber_resource_has_capability(jbr, "http://jabber.org/protocol/chatstates"))
 		jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED;
 	else
 		jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED;
+#endif
 
 out:
 	g_free(userdata->from);
--- a/libpurple/protocols/jabber/presence.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/presence.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/roster.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/roster.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/roster.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/roster.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/si.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/si.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/si.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/si.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/useravatar.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/useravatar.c	Mon Aug 24 17:20:46 2009 +0900
@@ -17,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/useravatar.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/useravatar.h	Mon Aug 24 17:20:46 2009 +0900
@@ -17,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/usermood.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/usermood.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/usermood.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/usermood.h	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/usernick.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/usernick.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/usernick.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/usernick.h	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/usertune.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/usertune.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/usertune.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/usertune.h	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2007, Andreas Monitzer <andy@monitzer.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
@@ -15,7 +17,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  *
  */
 
--- a/libpurple/protocols/jabber/xdata.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/xdata.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1,7 +1,9 @@
 /*
  * purple - Jabber Protocol Plugin
  *
- * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/jabber/xdata.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/jabber/xdata.h	Mon Aug 24 17:20:46 2009 +0900
@@ -3,7 +3,9 @@
  *
  * purple
  *
- * Copyright (C) 2003 Nathan Walp <faceprint@faceprint.com>
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
  *
  * 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
--- a/libpurple/protocols/msn/cmdproc.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/cmdproc.h	Mon Aug 24 17:20:46 2009 +0900
@@ -71,6 +71,4 @@
 void msn_cmdproc_process_payload(MsnCmdProc *cmdproc,
 								 char *payload, int payload_len);
 
-void msn_cmdproc_disconnect(MsnCmdProc *cmdproc);
-
 #endif /* _MSN_CMDPROC_H_ */
--- a/libpurple/protocols/msn/contact.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/contact.c	Mon Aug 24 17:20:46 2009 +0900
@@ -21,7 +21,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  */
 
 #include "msn.h"
--- a/libpurple/protocols/msn/contact.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/contact.h	Mon Aug 24 17:20:46 2009 +0900
@@ -20,7 +20,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  */
 #ifndef _MSN_CONTACT_H_
 #define _MSN_CONTACT_H_
--- a/libpurple/protocols/msn/error.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/error.c	Mon Aug 24 17:20:46 2009 +0900
@@ -198,7 +198,7 @@
 			break;
 
 		case 800:
-			result = _("Friendly name changes too rapidly");
+			result = _("Friendly name is changing too rapidly");
 			break;
 
 		case 910:
--- a/libpurple/protocols/msn/msn.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/msn.c	Mon Aug 24 17:20:46 2009 +0900
@@ -89,6 +89,7 @@
 typedef struct
 {
 	char *smile;
+	PurpleSmiley *ps;
 	MsnObject *obj;
 } MsnEmoticon;
 
@@ -269,6 +270,7 @@
 	MsnSession *session;
 	MsnCmdProc *cmdproc;
 	MsnPage *page;
+	MsnMessage *msg;
 	MsnUser *user;
 	char *payload = NULL;
 	const char *mobile_number = NULL;
@@ -299,6 +301,9 @@
 	msn_transaction_set_payload(trans, payload, payload_len);
 	g_free(payload);
 
+	msg = msn_message_new_plain(entry);
+	msn_transaction_set_data(trans, msg);
+
 	msn_page_destroy(page);
 
 	msn_cmdproc_send_trans(cmdproc, trans);
@@ -1099,12 +1104,10 @@
 	strobj = msn_object_to_string(obj);
 
 	if (current)
-		g_string_append_printf(current, "\t%s\t%s",
-				emoticon->smile, strobj);
+		g_string_append_printf(current, "\t%s\t%s", emoticon->smile, strobj);
 	else {
 		current = g_string_new("");
-		g_string_printf(current,"%s\t%s",
-					emoticon->smile, strobj);
+		g_string_printf(current, "%s\t%s", emoticon->smile, strobj);
 	}
 
 	g_free(strobj);
@@ -1167,6 +1170,7 @@
 
 		emoticon = g_new0(MsnEmoticon, 1);
 		emoticon->smile = g_strdup(purple_smiley_get_shortcut(smiley));
+		emoticon->ps = smiley;
 		emoticon->obj = msn_object_new_from_image(img,
 				purple_imgstore_get_filename(img),
 				username, MSN_OBJECT_EMOTICON);
@@ -1189,7 +1193,7 @@
 
 	smileys = msn_msg_grab_emoticons(msg->body, username);
 	while (smileys) {
-		smile = (MsnEmoticon*)smileys->data;
+		smile = (MsnEmoticon *)smileys->data;
 		emoticons = msn_msg_emoticon_add(emoticons, smile);
 		msn_emoticon_destroy(smile);
 		smileys = g_slist_delete_link(smileys, smileys);
@@ -1740,13 +1744,19 @@
 {
 	PurpleAccount *account;
 	MsnSession *session;
+	const char *username;
 	MsnSwitchBoard *swboard;
 	MsnMessage *msg;
 	char *msgformat;
 	char *msgtext;
+	size_t msglen;
+	MsnEmoticon *smile;
+	GSList *smileys;
+	GString *emoticons = NULL;
 
 	account = purple_connection_get_account(gc);
 	session = gc->proto_data;
+	username = purple_account_get_username(account);
 	swboard = msn_session_find_swboard_with_id(session, id);
 
 	if (swboard == NULL)
@@ -1758,8 +1768,9 @@
 	swboard->flag |= MSN_SB_FLAG_IM;
 
 	msn_import_html(message, &msgformat, &msgtext);
-
-	if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564)
+	msglen = strlen(msgtext);
+
+	if ((msglen == 0) || (msglen + strlen(msgformat) + strlen(VERSION) > 1564))
 	{
 		g_free(msgformat);
 		g_free(msgtext);
@@ -1769,6 +1780,29 @@
 
 	msg = msn_message_new_plain(msgtext);
 	msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat);
+
+	smileys = msn_msg_grab_emoticons(msg->body, username);
+	while (smileys) {
+		smile = (MsnEmoticon *)smileys->data;
+		emoticons = msn_msg_emoticon_add(emoticons, smile);
+		if (purple_conv_custom_smiley_add(swboard->conv, smile->smile,
+		                                  "sha1", purple_smiley_get_checksum(smile->ps),
+		                                  FALSE)) {
+			gconstpointer data;
+			size_t len;
+			data = purple_smiley_get_data(smile->ps, &len);
+			purple_conv_custom_smiley_write(swboard->conv, smile->smile, data, len);
+			purple_conv_custom_smiley_close(swboard->conv, smile->smile);
+		}
+		msn_emoticon_destroy(smile);
+		smileys = g_slist_delete_link(smileys, smileys);
+	}
+
+	if (emoticons) {
+		msn_send_emoticons(swboard, emoticons);
+		g_string_free(emoticons, TRUE);
+	}
+
 	msn_switchboard_send_msg(swboard, msg, FALSE);
 	msn_message_destroy(msg);
 
--- a/libpurple/protocols/msn/notification.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/notification.c	Mon Aug 24 17:20:46 2009 +0900
@@ -599,6 +599,8 @@
 		/* Decrement the count for unknown results so that we'll continue login.
 		   Also, need to finish the login process here as well, because ADL OK
 		   will not be called. */
+		if (purple_debug_is_verbose())
+			purple_debug_info("msn", "ADL/FQY count is %d\n", session->adl_fqy);
 		if (--session->adl_fqy == 0)
 			msn_session_finish_login(session);
 		return;
@@ -680,6 +682,9 @@
 
 				/* ADL's are returned all-together */
 				session->adl_fqy++;
+				if (purple_debug_is_verbose())
+					purple_debug_info("msn", "Posting ADL, count is %d\n",
+					                  session->adl_fqy);
 
 				msn_notification_post_adl(session->notification->cmdproc,
 					payload, payload_len);
@@ -694,6 +699,9 @@
 		} else {
 			/* FQY's are returned one-at-a-time */
 			session->adl_fqy++;
+			if (purple_debug_is_verbose())
+				purple_debug_info("msn", "Adding FQY address, count is %d\n",
+				                  session->adl_fqy);
 
 			msn_add_contact_xml(session, fqy_node, user->passport,
 				0, user->networkid);
@@ -718,6 +726,9 @@
 
 		/* ADL's are returned all-together */
 		session->adl_fqy++;
+		if (purple_debug_is_verbose())
+			purple_debug_info("msn", "Posting ADL, count is %d\n",
+			                  session->adl_fqy);
 
 		msn_notification_post_adl(session->notification->cmdproc, payload, payload_len);
 
@@ -809,6 +820,9 @@
 
 	if (!strcmp(cmd->params[1], "OK")) {
 		/* ADL ack */
+		if (purple_debug_is_verbose())
+			purple_debug_info("msn", "ADL ACK, count is %d\n",
+			                  session->adl_fqy);
 		if (--session->adl_fqy == 0)
 			msn_session_finish_login(session);
 	} else {
@@ -1178,14 +1192,36 @@
 	id = xmlnode_get_attrib(msg, "id");
 
 	if (id && !strcmp(id, "407")) {
-		/* TODO: Use this to NAK the transaction, maybe print the text, too.
-		unsigned int trId;
-		id = xmlnode_get_attrib(payloadNode, "id");
-		trId = atol(id);
-		*/
-		purple_conv_present_error(who, gc->account,
-			_("Mobile message was not sent because it was too long."));
+		PurpleConversation *conv
+			= purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY,
+			                                        who, gc->account);
+		if (conv != NULL) {
+			purple_conversation_write(conv, NULL,
+			                          _("Mobile message was not sent because it was too long."),
+			                          PURPLE_MESSAGE_ERROR, time(NULL));
+
+			if ((id = xmlnode_get_attrib(payloadNode, "id")) != NULL) {
+				unsigned int trId = atol(id);
+				MsnTransaction *trans;
+				MsnMessage *msg;
 
+				trans = msn_history_find(cmdproc->history, trId);
+				msg = (MsnMessage *)trans->data;
+
+				if (msg) {
+					char *body_str = msn_message_to_string(msg);
+					char *body_enc = g_markup_escape_text(body_str, -1);
+
+					purple_conversation_write(conv, NULL, body_enc,
+					                          PURPLE_MESSAGE_RAW, time(NULL));
+
+					g_free(body_str);
+					g_free(body_enc);
+					msn_message_destroy(msg);
+					trans->data = NULL;
+				}
+			}
+		}
 	} else {
 		serv_got_im(gc, who, text, 0, time(NULL));
 	}
--- a/libpurple/protocols/msn/oim.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/oim.c	Mon Aug 24 17:20:46 2009 +0900
@@ -21,7 +21,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  */
 #include "msn.h"
 #include "soap.h"
--- a/libpurple/protocols/msn/oim.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/oim.h	Mon Aug 24 17:20:46 2009 +0900
@@ -20,7 +20,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  */
 #ifndef _MSN_OIM_H_
 #define _MSN_OIM_H_
--- a/libpurple/protocols/msn/slp.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/slp.c	Mon Aug 24 17:20:46 2009 +0900
@@ -403,9 +403,8 @@
 			if (conv) {
 				char *buf;
 				buf = g_strdup_printf(
-						_("%s has sent you a webcam "
-						"invite, which is not yet "
-						"supported."), from);
+						_("%s invited you to view his/her webcam, but "
+						"this is not yet supported."), from);
 				purple_conversation_write(conv, NULL, buf,
 						PURPLE_MESSAGE_SYSTEM |
 						PURPLE_MESSAGE_NOTIFY,
--- a/libpurple/protocols/msn/slpcall.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/slpcall.c	Mon Aug 24 17:20:46 2009 +0900
@@ -205,7 +205,7 @@
 		if (slpmsg->session_id == 64)
 		{
 			/* This is for handwritten messages (Ink) */
-			GError *error;
+			GError *error = NULL;
 			gsize bytes_read, bytes_written;
 
 			body_str = g_convert((const gchar *)body, body_len / 2,
@@ -232,7 +232,7 @@
 			g_free(body_str);
 
 			body_str = g_convert((const gchar *)body, body_len / 2,
-			                     "UTF-8", "UTF16-LE",
+			                     "UTF-8", "UTF-16LE",
 			                     &bytes_read, &bytes_written, &error);
 			if (!body_str)
 			{
--- a/libpurple/protocols/msn/slplink.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/slplink.c	Mon Aug 24 17:20:46 2009 +0900
@@ -505,11 +505,6 @@
 
 	data = msn_message_get_bin_data(msg, &len);
 
-	/*
-		OVERHEAD!
-		if (msg->msnslp_header.length < msg->msnslp_header.total_size)
-	 */
-
 	offset = msg->msnslp_header.offset;
 
 	if (offset == 0)
--- a/libpurple/protocols/msn/soap.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/soap.c	Mon Aug 24 17:20:46 2009 +0900
@@ -20,7 +20,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  */
 
 #include "internal.h"
--- a/libpurple/protocols/msn/soap.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/msn/soap.h	Mon Aug 24 17:20:46 2009 +0900
@@ -20,7 +20,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  */
 
 #ifndef _MSN_SOAP_H
--- a/libpurple/protocols/oscar/clientlogin.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/oscar/clientlogin.c	Mon Aug 24 17:20:46 2009 +0900
@@ -156,11 +156,15 @@
 	response_node = xmlnode_from_str(response, response_len);
 	if (response_node == NULL)
 	{
+		char *msg;
 		purple_debug_error("oscar", "startOSCARSession could not parse "
 				"response as XML: %s\n", response);
+		/* Note to translators: %s in this string is a URL */
+		msg = g_strdup_printf(_("Received unexpected response from %s"),
+				URL_START_OSCAR_SESSION);
 		purple_connection_error_reason(gc,
-				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-				_("Received unexpected response from " URL_START_OSCAR_SESSION));
+				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, msg);
+		g_free(msg);
 		return FALSE;
 	}
 
@@ -175,11 +179,14 @@
 
 	/* Make sure we have a status code */
 	if (tmp_node == NULL || (tmp = xmlnode_get_data_unescaped(tmp_node)) == NULL) {
+		char *msg;
 		purple_debug_error("oscar", "startOSCARSession response was "
 				"missing statusCode: %s\n", response);
+		msg = g_strdup_printf(_("Received unexpected response from %s"),
+				URL_START_OSCAR_SESSION);
 		purple_connection_error_reason(gc,
-				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-				_("Received unexpected response from " URL_START_OSCAR_SESSION));
+				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, msg);
+		g_free(msg);
 		xmlnode_free(response_node);
 		return FALSE;
 	}
@@ -197,10 +204,14 @@
 					  "frequently. Wait ten minutes and try again. If "
 					  "you continue to try, you will need to wait even "
 					  "longer."));
-		else
+		else {
+			char *msg;
+			msg = g_strdup_printf(_("Received unexpected response from %s"),
+					URL_START_OSCAR_SESSION);
 			purple_connection_error_reason(gc,
-					PURPLE_CONNECTION_ERROR_OTHER_ERROR,
-					_("Received unexpected response from " URL_START_OSCAR_SESSION));
+					PURPLE_CONNECTION_ERROR_OTHER_ERROR, msg);
+			g_free(msg);
+		}
 
 		g_free(tmp);
 		xmlnode_free(response_node);
@@ -212,11 +223,14 @@
 	if (data_node == NULL || host_node == NULL ||
 		port_node == NULL || cookie_node == NULL)
 	{
+		char *msg;
 		purple_debug_error("oscar", "startOSCARSession response was missing "
 				"something: %s\n", response);
+		msg = g_strdup_printf(_("Received unexpected response from %s"),
+				URL_START_OSCAR_SESSION);
 		purple_connection_error_reason(gc,
-				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-				_("Received unexpected response from " URL_START_OSCAR_SESSION));
+				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, msg);
+		g_free(msg);
 		xmlnode_free(response_node);
 		return FALSE;
 	}
@@ -227,11 +241,14 @@
 	*cookie = xmlnode_get_data_unescaped(cookie_node);
 	if (*host == NULL || **host == '\0' || tmp == NULL || *tmp == '\0' || cookie == NULL || *cookie == '\0')
 	{
+		char *msg;
 		purple_debug_error("oscar", "startOSCARSession response was missing "
 				"something: %s\n", response);
+		msg = g_strdup_printf(_("Received unexpected response from %s"),
+				URL_START_OSCAR_SESSION);
 		purple_connection_error_reason(gc,
-				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-				_("Received unexpected response from " URL_START_OSCAR_SESSION));
+				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, msg);
+		g_free(msg);
 		g_free(*host);
 		g_free(tmp);
 		g_free(*cookie);
@@ -261,8 +278,10 @@
 
 	if (error_message != NULL || len == 0) {
 		gchar *tmp;
-		tmp = g_strdup_printf(_("Error requesting " URL_START_OSCAR_SESSION
-				": %s"), error_message);
+		/* Note to translators: The first %s is a URL, the second is an
+		   error message. */
+		tmp = g_strdup_printf(_("Error requesting %s: %s"),
+				URL_START_OSCAR_SESSION, error_message);
 		purple_connection_error_reason(gc,
 				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
 		g_free(tmp);
@@ -339,11 +358,14 @@
 	response_node = xmlnode_from_str(response, response_len);
 	if (response_node == NULL)
 	{
+		char *msg;
 		purple_debug_error("oscar", "clientLogin could not parse "
 				"response as XML: %s\n", response);
+		msg = g_strdup_printf(_("Received unexpected response from %s"),
+				URL_CLIENT_LOGIN);
 		purple_connection_error_reason(gc,
-				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-				_("Received unexpected response from " URL_CLIENT_LOGIN));
+				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, msg);
+		g_free(msg);
 		return FALSE;
 	}
 
@@ -360,11 +382,14 @@
 
 	/* Make sure we have a status code */
 	if (tmp_node == NULL || (tmp = xmlnode_get_data_unescaped(tmp_node)) == NULL) {
+		char *msg;
 		purple_debug_error("oscar", "clientLogin response was "
 				"missing statusCode: %s\n", response);
+		msg = g_strdup_printf(_("Received unexpected response from %s"),
+				URL_CLIENT_LOGIN);
 		purple_connection_error_reason(gc,
-				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-				_("Received unexpected response from " URL_CLIENT_LOGIN));
+				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, msg);
+		g_free(msg);
 		xmlnode_free(response_node);
 		return FALSE;
 	}
@@ -393,10 +418,14 @@
 			purple_connection_error_reason(gc,
 					PURPLE_CONNECTION_ERROR_OTHER_ERROR,
 					_("AOL does not allow your screen name to authenticate here"));
-		} else
+		} else {
+			char *msg;
+			msg = g_strdup_printf(_("Received unexpected response from %s"),
+					URL_CLIENT_LOGIN);
 			purple_connection_error_reason(gc,
-					PURPLE_CONNECTION_ERROR_OTHER_ERROR,
-					_("Received unexpected response from " URL_CLIENT_LOGIN));
+					PURPLE_CONNECTION_ERROR_OTHER_ERROR, msg);
+			g_free(msg);
+		}
 
 		xmlnode_free(response_node);
 		return FALSE;
@@ -407,11 +436,14 @@
 	if (data_node == NULL || secret_node == NULL ||
 		token_node == NULL || tokena_node == NULL)
 	{
+		char *msg;
 		purple_debug_error("oscar", "clientLogin response was missing "
 				"something: %s\n", response);
+		msg = g_strdup_printf(_("Received unexpected response from %s"),
+				URL_CLIENT_LOGIN);
 		purple_connection_error_reason(gc,
-				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-				_("Received unexpected response from " URL_CLIENT_LOGIN));
+				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, msg);
+		g_free(msg);
 		xmlnode_free(response_node);
 		return FALSE;
 	}
@@ -422,11 +454,14 @@
 	tmp = xmlnode_get_data_unescaped(hosttime_node);
 	if (*token == NULL || **token == '\0' || *secret == NULL || **secret == '\0' || tmp == NULL || *tmp == '\0')
 	{
+		char *msg;
 		purple_debug_error("oscar", "clientLogin response was missing "
 				"something: %s\n", response);
+		msg = g_strdup_printf(_("Received unexpected response from %s"),
+				URL_CLIENT_LOGIN);
 		purple_connection_error_reason(gc,
-				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-				_("Received unexpected response from " URL_CLIENT_LOGIN));
+				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, msg);
+		g_free(msg);
 		g_free(*token);
 		g_free(*secret);
 		g_free(tmp);
@@ -458,8 +493,8 @@
 
 	if (error_message != NULL || len == 0) {
 		gchar *tmp;
-		tmp = g_strdup_printf(_("Error requesting " URL_CLIENT_LOGIN
-				": %s"), error_message);
+		tmp = g_strdup_printf(_("Error requesting %s: %s"),
+				URL_CLIENT_LOGIN, error_message);
 		purple_connection_error_reason(gc,
 				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
 		g_free(tmp);
--- a/libpurple/protocols/oscar/family_buddy.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/oscar/family_buddy.c	Mon Aug 24 17:20:46 2009 +0900
@@ -221,9 +221,6 @@
 	if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
 		ret = userfunc(od, conn, frame, &userinfo);
 
-	if (snac->subtype == SNAC_SUBTYPE_BUDDY_ONCOMING && userinfo.flags & AIM_FLAG_AWAY)
-		aim_locate_autofetch_away_message(od, userinfo.bn);
-
 	aim_info_free(&userinfo);
 
 	return ret;
--- a/libpurple/protocols/oscar/family_locate.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/oscar/family_locate.c	Mon Aug 24 17:20:46 2009 +0900
@@ -250,8 +250,6 @@
 aim_locate_adduserinfo(OscarData *od, aim_userinfo_t *userinfo)
 {
 	aim_userinfo_t *cur;
-	FlapConnection *conn;
-	aim_rxcallback_t userfunc;
 
 	cur = aim_locate_finduserinfo(od, userinfo->bn);
 
@@ -353,73 +351,6 @@
 		}
 		cur->away_len = 0;
 	}
-
-	/*
-	 * This callback can be used by a client if they want to know whenever
-	 * info for a buddy is updated.  For example, if a client shows away
-	 * messages in its buddy list, then it would need to know if a user's
-	 * away message changes.
-	 */
-	conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE);
-	if ((userfunc = aim_callhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_GOTINFOBLOCK)))
-		userfunc(od, conn, NULL, cur);
-}
-
-/**
- * Remove this buddy name from our queue.  If this info was requested
- * by our info request queue, then pop the next element off of the queue.
- *
- * @param od The aim session.
- * @param bn Buddy name of the info we just received.
- * @return True if the request was explicit (client requested the info),
- *         false if the request was implicit (libfaim request the info).
- */
-static int
-aim_locate_gotuserinfo(OscarData *od, FlapConnection *conn, const char *bn)
-{
-	struct userinfo_node *cur, *del;
-	int was_explicit = TRUE;
-
-	while ((od->locate.requested != NULL) && (oscar_util_name_compare(bn, od->locate.requested->bn) == 0)) {
-		del = od->locate.requested;
-		od->locate.requested = del->next;
-		was_explicit = FALSE;
-		g_free(del->bn);
-		g_free(del);
-	}
-
-	cur = od->locate.requested;
-	while ((cur != NULL) && (cur->next != NULL)) {
-		if (oscar_util_name_compare(bn, cur->next->bn) == 0) {
-			del = cur->next;
-			cur->next = del->next;
-			was_explicit = FALSE;
-			g_free(del->bn);
-			g_free(del);
-		} else
-			cur = cur->next;
-	}
-
-	return was_explicit;
-}
-
-void
-aim_locate_autofetch_away_message(OscarData *od, const char *bn)
-{
-	struct userinfo_node *cur;
-
-	/* Make sure we haven't already made an info request for this buddy */
-	for (cur = od->locate.requested; cur != NULL; cur = cur->next)
-		if (oscar_util_name_compare(bn, cur->bn) == 0)
-			return;
-
-	/* Add a new node to our request queue */
-	cur = (struct userinfo_node *)g_malloc(sizeof(struct userinfo_node));
-	cur->bn = g_strdup(bn);
-	cur->next = od->locate.requested;
-	od->locate.requested = cur;
-
-	aim_locate_getinfoshort(od, cur->bn, 0x00000002);
 }
 
 aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *bn) {
@@ -956,7 +887,6 @@
 	aim_snac_t *snac2;
 	guint16 reason;
 	char *bn;
-	int was_explicit;
 
 	if (!(snac2 = aim_remsnac(od, snac->id))) {
 		purple_debug_misc("oscar", "locate error: received response from unknown request!\n");
@@ -978,15 +908,9 @@
 
 	reason = byte_stream_get16(bs);
 
-	/*
-	 * Remove this buddy name from our queue.  If the client requested
-	 * this buddy's info explicitly, then notify them that we do not have
-	 * info for this buddy.
-	 */
-	was_explicit = aim_locate_gotuserinfo(od, conn, bn);
-	if (was_explicit == TRUE)
-		if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-			ret = userfunc(od, conn, frame, reason, bn);
+	/* Notify the user that we do not have info for this buddy */
+	if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
+		ret = userfunc(od, conn, frame, reason, bn);
 
 	if (snac2)
 		g_free(snac2->data);
@@ -1202,7 +1126,6 @@
 	aim_userinfo_t *userinfo, *userinfo2;
 	GSList *tlvlist;
 	aim_tlv_t *tlv = NULL;
-	int was_explicit;
 
 	userinfo = (aim_userinfo_t *)g_malloc(sizeof(aim_userinfo_t));
 	aim_info_extract(od, bs, userinfo);
@@ -1238,18 +1161,9 @@
 	aim_info_free(userinfo);
 	g_free(userinfo);
 
-	/*
-	 * Remove this buddy name from our queue.  If the client requested
-	 * this buddy's info explicitly, then notify them that we have info
-	 * for this buddy.
-	 */
-	if (userinfo2 != NULL)
-	{
-		was_explicit = aim_locate_gotuserinfo(od, conn, userinfo2->bn);
-		if (was_explicit == TRUE)
-			if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-				ret = userfunc(od, conn, frame, userinfo2);
-	}
+	/* Show the info to the user */
+	if (userinfo2 != NULL && ((userfunc = aim_callhandler(od, snac->family, snac->subtype))))
+		ret = userfunc(od, conn, frame, userinfo2);
 
 	return ret;
 }
--- a/libpurple/protocols/oscar/oscar.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/oscar/oscar.c	Mon Aug 24 17:20:46 2009 +0900
@@ -160,7 +160,6 @@
 static int purple_parse_misses     (OscarData *, FlapConnection *, FlapFrame *, ...);
 static int purple_parse_clientauto (OscarData *, FlapConnection *, FlapFrame *, ...);
 static int purple_parse_userinfo   (OscarData *, FlapConnection *, FlapFrame *, ...);
-static int purple_got_infoblock    (OscarData *, FlapConnection *, FlapFrame *, ...);
 static int purple_parse_motd       (OscarData *, FlapConnection *, FlapFrame *, ...);
 static int purple_chatnav_info     (OscarData *, FlapConnection *, FlapFrame *, ...);
 static int purple_conv_chat_join        (OscarData *, FlapConnection *, FlapFrame *, ...);
@@ -840,24 +839,24 @@
 
 	od = purple_connection_get_protocol_data(gc);
 
-	if (userinfo == NULL)
-		userinfo = aim_locate_finduserinfo(od, purple_buddy_get_name(b));
-
-	if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL)))
+	if (b == NULL && userinfo == NULL)
 		return;
 
 	if (b == NULL)
 		b = purple_find_buddy(purple_connection_get_account(gc), userinfo->bn);
+	else
+		userinfo = aim_locate_finduserinfo(od, purple_buddy_get_name(b));
 
 	if (b) {
 		presence = purple_buddy_get_presence(b);
 		status = purple_presence_get_active_status(presence);
-
-		message = g_strdup(purple_status_get_attr_string(status, "message"));
-		itmsurl = g_strdup(purple_status_get_attr_string(status, "itmsurl"));
-
-	} else {
-		/* This is an OSCAR contact for whom we don't have a PurpleBuddy but do have information. */
+	}
+
+	/* If we have both b and userinfo we favor userinfo, because if we're
+	   viewing someone's profile then we want the HTML away message, and
+	   the "message" attribute of the status contains only the plaintext
+	   message. */
+	if (userinfo) {
 		if ((userinfo->flags & AIM_FLAG_AWAY)) {
 			/* Away message? */
 			if ((userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
@@ -878,6 +877,9 @@
 												 userinfo->itmsurl, userinfo->itmsurl_len);
 #endif
 		}
+	} else {
+		message = g_strdup(purple_status_get_attr_string(status, "message"));
+		itmsurl = g_strdup(purple_status_get_attr_string(status, "itmsurl"));
 	}
 
 	is_away = ((status && !purple_status_is_available(status)) ||
@@ -944,7 +946,6 @@
 			g_free(message);
 			message = g_strdup(_("Offline"));
 		}
-
 	}
 
 	purple_notify_user_info_add_pair(user_info, _("Status"), message);
@@ -1506,7 +1507,6 @@
 	oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_RIGHTSINFO, purple_parse_locaterights, 0);
 	oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_USERINFO, purple_parse_userinfo, 0);
 	oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_ERROR, purple_parse_locerr, 0);
-	oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_GOTINFOBLOCK, purple_got_infoblock, 0);
 	oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x0001, purple_parse_genericerr, 0);
 	oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x000f, purple_selfinfo, 0);
 	oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x001f, purple_memrequest, 0);
@@ -2167,6 +2167,23 @@
 	g_return_val_if_fail(info != NULL, 1);
 	g_return_val_if_fail(info->bn != NULL, 1);
 
+	/*
+	 * If this is an AIM buddy and their name has formatting, set their
+	 * server alias.
+	 */
+	if (!oscar_util_valid_name_icq(info->bn)) {
+		gboolean bn_has_formatting = FALSE;
+		char *c;
+		for (c = info->bn; *c != '\0'; c++) {
+			if (!islower(*c)) {
+				bn_has_formatting = TRUE;
+				break;
+			}
+		}
+		serv_got_alias(gc, info->bn,
+				bn_has_formatting ? info->bn : NULL);
+	}
+
 	if (info->present & AIM_USERINFO_PRESENT_FLAGS) {
 		if (info->flags & AIM_FLAG_AWAY)
 			buddy_is_away = TRUE;
@@ -3320,7 +3337,7 @@
 	oscar_user_info_append_extra_info(gc, user_info, NULL, userinfo);
 
 	if ((userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) && !oscar_util_valid_name_sms(userinfo->bn)) {
-		/* An SMS contact is always online; its Online Since valid is not useful */
+		/* An SMS contact is always online; its Online Since value is not useful */
 		time_t t = userinfo->onlinesince;
 		oscar_user_info_add_pair(user_info, _("Online Since"), purple_date_format_full(localtime(&t)));
 	}
@@ -3363,55 +3380,6 @@
 	return 1;
 }
 
-static int purple_got_infoblock(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
-{
-	PurpleConnection *gc = od->gc;
-	PurpleAccount *account = purple_connection_get_account(gc);
-	PurpleBuddy *b;
-	PurplePresence *presence;
-	PurpleStatus *status;
-	gchar *message = NULL;
-
-	va_list ap;
-	aim_userinfo_t *userinfo;
-
-	va_start(ap, fr);
-	userinfo = va_arg(ap, aim_userinfo_t *);
-	va_end(ap);
-
-	b = purple_find_buddy(account, userinfo->bn);
-	if (b == NULL)
-		return 1;
-
-	if (!oscar_util_valid_name_icq(userinfo->bn))
-	{
-		if (strcmp(purple_buddy_get_name(b), userinfo->bn) != 0)
-			serv_got_alias(gc, purple_buddy_get_name(b), userinfo->bn);
-		else
-			serv_got_alias(gc, purple_buddy_get_name(b), NULL);
-	}
-
-	presence = purple_buddy_get_presence(b);
-	status = purple_presence_get_active_status(presence);
-
-	if (purple_status_is_online(status) && !purple_status_is_available(status) &&
-			userinfo->flags & AIM_FLAG_AWAY && userinfo->away_len > 0 &&
-			userinfo->away != NULL && userinfo->away_encoding != NULL)
-	{
-		gchar *charset = oscar_encoding_extract(userinfo->away_encoding);
-		message = oscar_encoding_to_utf8(account, charset,
-		                                 userinfo->away,
-		                                 userinfo->away_len);
-		g_free(charset);
-		purple_prpl_got_user_status(account, userinfo->bn,
-				purple_status_get_id(status),
-				"message", message, NULL);
-		g_free(message);
-	}
-
-	return 1;
-}
-
 static int purple_parse_motd(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
 {
 	char *msg;
@@ -6364,6 +6332,44 @@
 }
 
 static void
+oscar_close_directim(gpointer object, gpointer ignored)
+{
+	PurpleBlistNode *node;
+	PurpleBuddy *buddy;
+	PurpleAccount *account;
+	PurpleConnection *gc;
+	PurpleConversation *conv;
+	OscarData *od;
+	PeerConnection *conn;
+	const char *name;
+
+	node = object;
+
+	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
+
+	buddy = (PurpleBuddy*)node;
+	name = purple_buddy_get_name(buddy);
+	account = purple_buddy_get_account(buddy);
+	gc = purple_account_get_connection(account);
+	od = gc->proto_data;
+	conn = peer_connection_find_by_type(od, name, OSCAR_CAPABILITY_DIRECTIM);
+
+	if (conn != NULL)
+	{
+		if (!conn->ready)
+			aim_im_sendch2_cancel(conn);
+
+		peer_connection_destroy(conn, OSCAR_DISCONNECT_LOCAL_CLOSED, NULL);
+
+		/* OSCAR_DISCONNECT_LOCAL_CLOSED doesn't write anything to the convo
+		 * window. Let the user know that we canceled the Direct IM. */
+		conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name);
+		purple_conversation_write(conv, NULL, _("You closed the connection."),
+		                          PURPLE_MESSAGE_SYSTEM, time(NULL));
+	}
+}
+
+static void
 oscar_get_aim_info_cb(PurpleBlistNode *node, gpointer ignore)
 {
 	PurpleBuddy *buddy;
@@ -6426,11 +6432,23 @@
 		oscar_util_name_compare(purple_account_get_username(account), bname) &&
 		PURPLE_BUDDY_IS_ONLINE(buddy))
 	{
+		PeerConnection *conn;
+		conn = peer_connection_find_by_type(od, bname, OSCAR_CAPABILITY_DIRECTIM);
+
 		if (userinfo->capabilities & OSCAR_CAPABILITY_DIRECTIM)
 		{
-			act = purple_menu_action_new(_("Direct IM"),
-			                           PURPLE_CALLBACK(oscar_ask_directim),
-			                           NULL, NULL);
+			if (conn)
+			{
+				act = purple_menu_action_new(_("End Direct IM Session"),
+				                          PURPLE_CALLBACK(oscar_close_directim),
+				                          NULL, NULL);
+			}
+			else
+			{
+				act = purple_menu_action_new(_("Direct IM"),
+				                          PURPLE_CALLBACK(oscar_ask_directim),
+				                          NULL, NULL);
+			}
 			menu = g_list_prepend(menu, act);
 		}
 #if 0
--- a/libpurple/protocols/oscar/oscar.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/oscar/oscar.h	Mon Aug 24 17:20:46 2009 +0900
@@ -533,7 +533,6 @@
 
 	struct {
 		struct aim_userinfo_s *userinfo;
-		struct userinfo_node *requested;
 	} locate;
 
 	/* Server-stored information (ssi) */
@@ -1134,7 +1133,6 @@
 /* 0x000f */ int aim_locate_setinterests(OscarData *od, const char *interest1, const char *interest2, const char *interest3, const char *interest4, const char *interest5, guint16 privacy);
 /* 0x0015 */ int aim_locate_getinfoshort(OscarData *od, const char *bn, guint32 flags);
 
-void aim_locate_autofetch_away_message(OscarData *od, const char *bn);
 guint32 aim_locate_getcaps(OscarData *od, ByteStream *bs, int len);
 guint32 aim_locate_getcaps_short(OscarData *od, ByteStream *bs, int len);
 void aim_info_free(aim_userinfo_t *);
--- a/libpurple/protocols/oscar/snactypes.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/oscar/snactypes.h	Mon Aug 24 17:20:46 2009 +0900
@@ -96,7 +96,6 @@
 #define SNAC_SUBTYPE_LOCATE_USERINFO 0x0006
 #define SNAC_SUBTYPE_LOCATE_WATCHERSUBREQ 0x0007
 #define SNAC_SUBTYPE_LOCATE_WATCHERNOT 0x0008
-#define SNAC_SUBTYPE_LOCATE_GOTINFOBLOCK 0xfffd
 #define SNAC_SUBTYPE_LOCATE_DEFAULT 0xffff
 
 /*
--- a/libpurple/protocols/qq/qq_crypt.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/qq/qq_crypt.c	Mon Aug 24 17:20:46 2009 +0900
@@ -19,7 +19,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  *
  *
  * QQ encryption algorithm
--- a/libpurple/protocols/qq/qq_crypt.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/qq/qq_crypt.h	Mon Aug 24 17:20:46 2009 +0900
@@ -19,7 +19,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  */
 
 #ifndef _QQ_CRYPT_H_
--- a/libpurple/protocols/qq/send_file.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/qq/send_file.c	Mon Aug 24 17:20:46 2009 +0900
@@ -730,7 +730,7 @@
 	*/
 	filename = g_path_get_basename(purple_xfer_get_local_filename(qd->xfer));
 	msg = g_strdup_printf
-		(_("%d canceled the transfer of %s"),
+		(_("%d cancelled the transfer of %s"),
 		 sender_uid, filename);
 
 	purple_notify_warning (gc, _("File Send"), msg, NULL);
--- a/libpurple/protocols/yahoo/libyahoo.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/yahoo/libyahoo.c	Mon Aug 24 17:20:46 2009 +0900
@@ -322,10 +322,13 @@
 	option = purple_account_option_string_new(_("Chat room locale"), "room_list_locale", YAHOO_ROOMLIST_LOCALE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
+	option = purple_account_option_string_new(_("Encoding"), "local_charset", "UTF-8");
+	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
+
 	option = purple_account_option_bool_new(_("Ignore conference and chatroom invitations"), "ignore_invites", FALSE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
-	option = purple_account_option_string_new(_("Encoding"), "local_charset", "UTF-8");
+	option = purple_account_option_bool_new(_("Use account proxy for SSL connections"), "proxy_ssl", FALSE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
 	option = purple_account_option_string_new(_("Chat room list URL"), "room_list", YAHOO_ROOMLIST_URL);
--- a/libpurple/protocols/yahoo/libyahoojp.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/yahoo/libyahoojp.c	Mon Aug 24 17:20:46 2009 +0900
@@ -218,10 +218,13 @@
 	option = purple_account_option_string_new(_("Chat room locale"), "room_list_locale", YAHOOJP_ROOMLIST_LOCALE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
+	option = purple_account_option_string_new(_("Encoding"), "local_charset", "UTF-8");
+	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
+
 	option = purple_account_option_bool_new(_("Ignore conference and chatroom invitations"), "ignore_invites", FALSE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
-	option = purple_account_option_string_new(_("Encoding"), "local_charset", "UTF-8");
+	option = purple_account_option_bool_new(_("Use account proxy for SSL connections"), "proxy_ssl", FALSE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
 	option = purple_account_option_string_new(_("Chat room list URL"), "room_list", YAHOOJP_ROOMLIST_URL);
--- a/libpurple/protocols/yahoo/libymsg.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/yahoo/libymsg.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1845,11 +1845,12 @@
 			PurpleAccount *account = purple_connection_get_account(gc);
 			char *url = NULL;
 			gboolean yahoojp = yahoo_is_japan(account);
+			gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE);
 
 			url = g_strdup_printf(yahoojp ? YAHOOJP_LOGIN_URL : YAHOO_LOGIN_URL, token);
-			url_data = purple_util_fetch_url_request_len_with_account(account, url,
-					TRUE, YAHOO_CLIENT_USERAGENT, TRUE, NULL, FALSE, -1,
-					yahoo_auth16_stage2, auth_data);
+			url_data = purple_util_fetch_url_request_len_with_account(
+					proxy_ssl ? account : NULL, url, TRUE, YAHOO_CLIENT_USERAGENT,
+					TRUE, NULL, FALSE, -1, yahoo_auth16_stage2, auth_data);
 			g_free(url);
 			g_free(token);
 		}
@@ -1858,12 +1859,14 @@
 
 static void yahoo_auth16_stage1(PurpleConnection *gc, const char *seed)
 {
+	PurpleAccount *account = purple_connection_get_account(gc);
 	PurpleUtilFetchUrlData *url_data = NULL;
 	struct yahoo_auth_data *auth_data = NULL;
 	char *url = NULL;
 	char *encoded_username;
 	char *encoded_password;
-	gboolean yahoojp;
+	gboolean yahoojp = yahoo_is_japan(account);
+	gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE);
 
 	purple_debug_info("yahoo", "Authentication: In yahoo_auth16_stage1\n");
 
@@ -1872,7 +1875,6 @@
 		return;
 	}
 
-	yahoojp = yahoo_is_japan(purple_connection_get_account(gc));
 	auth_data = g_new0(struct yahoo_auth_data, 1);
 	auth_data->gc = gc;
 	auth_data->seed = g_strdup(seed);
@@ -1885,7 +1887,7 @@
 	g_free(encoded_username);
 
 	url_data = purple_util_fetch_url_request_len_with_account(
-			purple_connection_get_account(gc), url, TRUE,
+			proxy_ssl ? account : NULL, url, TRUE,
 			YAHOO_CLIENT_USERAGENT, TRUE, NULL, FALSE, -1,
 			yahoo_auth16_stage1_cb, auth_data);
 
@@ -2083,21 +2085,24 @@
 		if (!purple_account_get_remember_password(account))
 			purple_account_set_password(account, NULL);
 
-		msg = g_strdup(_("Incorrect password"));
+		msg = g_strdup(_("Invalid username or password"));
 		reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
 		break;
 	case 14:
-		msg = g_strdup(_("Your account is locked, please log in to the Yahoo! website."));
+		msg = g_strdup(_("Your account has been locked due to too many failed login attempts."
+					"  Please try logging into the Yahoo! website."));
 		reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
 		break;
 	case 52:
 		/* See #9660. As much as we know, reconnecting shouldn't hurt */
 		purple_debug_info("yahoo", "Got error 52, Set to autoreconnect\n");
-		msg = g_strdup_printf(_("Unknown error"));
+		msg = g_strdup_printf(_("Unknown error 52.  Reconnecting should fix this."));
 		reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
 		break;
 	case 1013:
-		msg = g_strdup(_("Invalid username"));
+		msg = g_strdup(_("Error 1013: The username you have entered is invalid."
+					"  The most common cause of this error is entering your e-mail"
+					" address instead of your Yahoo! ID."));
 		reason = PURPLE_CONNECTION_ERROR_INVALID_USERNAME;
 		break;
 	default:
@@ -4501,8 +4506,6 @@
 
 	if (purple_presence_is_idle(presence))
 		yahoo_packet_hash_str(pkt, 47, "2");
-	else if (!purple_status_is_available(status))
-		yahoo_packet_hash_str(pkt, 47, "1");
 
 	yahoo_packet_send_and_free(pkt, yd);
 
@@ -4523,6 +4526,7 @@
 	struct yahoo_packet *pkt = NULL;
 	char *msg = NULL, *msg2 = NULL;
 	PurpleStatus *status = NULL;
+	gboolean invisible = FALSE;
 	gboolean utf8 = TRUE;
 
 	if (idle && yd->current_status != YAHOO_STATUS_CUSTOM)
@@ -4532,9 +4536,15 @@
 		yd->current_status = get_yahoo_status_from_purple_status(status);
 	}
 
+	invisible = !( purple_presence_is_available(purple_account_get_presence(purple_connection_get_account(gc))) );
+
 	pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, yd->session_id);
 
-	yahoo_packet_hash_int(pkt, 10, yd->current_status);
+	if (!idle && invisible)
+		yahoo_packet_hash_int(pkt, 10, YAHOO_STATUS_AVAILABLE);
+	else
+		yahoo_packet_hash_int(pkt, 10, yd->current_status);
+
 	if (yd->current_status == YAHOO_STATUS_CUSTOM) {
 		const char *tmp;
 		if (status == NULL)
@@ -4557,8 +4567,6 @@
 
 	if (idle)
 		yahoo_packet_hash_str(pkt, 47, "2");
-	else if (!purple_presence_is_available(purple_account_get_presence(purple_connection_get_account(gc))))
-		yahoo_packet_hash_str(pkt, 47, "1");
 
 	yahoo_packet_send_and_free(pkt, yd);
 
--- a/libpurple/protocols/yahoo/libymsg.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/yahoo/libymsg.h	Mon Aug 24 17:20:46 2009 +0900
@@ -280,6 +280,27 @@
 void yahoo_init_colorht(void);
 void yahoo_dest_colorht(void);
 char *yahoo_codes_to_html(const char *x);
+
+/**
+ * This function takes a normal HTML message and converts it to the message
+ * format used by Yahoo, which uses a frankensteinish combination of ANSI
+ * escape codes and broken HTML.
+ *
+ * It results in slightly different output than would be sent by official
+ * Yahoo clients.  The two main differences are:
+ *
+ * 1. We always close all tags, whereas official Yahoo clients leave tags
+ *    dangling open at the end of each message (and the client treats them
+ *    as closed).
+ * 2. We always close inner tags first before closing outter tags.
+ *
+ * For example, if you want to send this message:
+ *   <b> bold <i> bolditalic </i></b><i> italic </i>
+ * Official Yahoo clients would send:
+ *   ESC[1m bold ESC[2m bolditalic ESC[x1m italic
+ * But we will send:
+ *   ESC[1m bold ESC[2m bolditalic ESC[x2mESC[x1mESC[2m italic ESC[x2m
+ */
 char *yahoo_html_to_codes(const char *src);
 
 gboolean
--- a/libpurple/protocols/yahoo/util.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/protocols/yahoo/util.c	Mon Aug 24 17:20:46 2009 +0900
@@ -519,7 +519,7 @@
 	int i, j;
 	gboolean no_more_gt_brackets = FALSE;
 	const char *match;
-	gchar *xmlstr1, *xmlstr2;
+	gchar *xmlstr1, *xmlstr2, *esc;
 
 	x_len = strlen(x);
 	html = xmlnode_new("html");
@@ -559,12 +559,15 @@
 #endif /* !USE_CSS_FORMATTING */
 
 				} else if ((match = g_hash_table_lookup(esc_codes_ht, code))) {
-					gboolean is_closing_tag;
-					gchar *tag_name;
-
-					tag_name = yahoo_markup_get_tag_name(match, &is_closing_tag);
-					yahoo_codes_to_html_add_tag(&cur, match, is_closing_tag, tag_name, FALSE);
-					g_free(tag_name);
+					/* Some tags are in the hash table only because we
+					 * want to ignore them */
+					if (match[0] != '\0') {
+						gboolean is_closing_tag;
+						gchar *tag_name;
+						tag_name = yahoo_markup_get_tag_name(match, &is_closing_tag);
+						yahoo_codes_to_html_add_tag(&cur, match, is_closing_tag, tag_name, FALSE);
+						g_free(tag_name);
+					}
 
 				} else {
 					purple_debug_error("yahoo",
@@ -614,7 +617,6 @@
 				if (match == NULL) {
 					/* Unknown tag.  The user probably typed a less-than sign */
 					g_string_append_c(cdata, x[i]);
-					no_more_gt_brackets = TRUE;
 					g_free(tag);
 					g_free(tag_name);
 					break;
@@ -663,7 +665,10 @@
 	xmlstr2 = g_strndup(xmlstr1 + 6, strlen(xmlstr1) - 13);
 	g_free(xmlstr1);
 
-	purple_debug_misc("yahoo", "yahoo_codes_to_html:  Returning string: '%s'.\n", xmlstr2);
+	esc = g_strescape(x, NULL);
+	purple_debug_misc("yahoo", "yahoo_codes_to_html(%s)=%s\n", esc, xmlstr2);
+	g_free(esc);
+
 	return xmlstr2;
 }
 
@@ -672,33 +677,16 @@
 #define POINT_SIZE(x) (_point_sizes [MIN ((x > 0 ? x : 1), MAX_FONT_SIZE) - 1])
 static const gint _point_sizes [] = { 8, 10, 12, 14, 20, 30, 40 };
 
-enum fatype
-{
-	FATYPE_SIZE,
-	FATYPE_COLOR,
-	FATYPE_FACE,
-	FATYPE_JUNK
-};
-
 typedef struct
 {
-	enum fatype type;
-	union {
-		int size;
-		char *color;
-		char *face;
-		char *junk;
-	} u;
-} fontattr;
-
-static void fontattr_free(fontattr *f)
-{
-	if (f->type == FATYPE_COLOR)
-		g_free(f->u.color);
-	else if (f->type == FATYPE_FACE)
-		g_free(f->u.face);
-	g_free(f);
-}
+	gboolean bold;
+	gboolean italic;
+	gboolean underline;
+	gboolean in_link;
+	int font_size;
+	char *font_face;
+	char *font_color;
+} CurrentMsgState;
 
 static void yahoo_htc_list_cleanup(GSList *l)
 {
@@ -708,338 +696,203 @@
 	}
 }
 
-static void _parse_font_tag(const char *src, GString *dest, int *i, int *j,
-				int len, GSList **colors, GSList **tags, GQueue *ftattr)
+static void parse_font_tag(GString *dest, const char *tag_name, const char *tag,
+				GSList **colors, GSList **tags)
 {
-	int m, n, vstart;
-	gboolean quote = FALSE, done = FALSE;
+	const char *start;
+	const char *end;
+	GData *attributes;
+	const char *attribute;
+	gboolean needendtag;
+	GString *tmp;
 
-	m = *j;
+	purple_markup_find_tag(tag_name, tag, &start, &end, &attributes);
+
+	needendtag = FALSE;
+	tmp = g_string_new(NULL);
 
-	while (1) {
-		m++;
+	attribute = g_datalist_get_data(&attributes, "color");
+	if (attribute != NULL) {
+		g_string_append(tmp, *colors ? (*colors)->data : "\033[#000000m");
+		g_string_append_printf(dest, "\033[%sm", attribute);
+		*colors = g_slist_prepend(*colors,
+				g_strdup_printf("\033[%sm", attribute));
+	} else {
+		/* We need to add a value to the colors stack even if we're not
+		 * setting a color because we ALWAYS pop exactly 1 element from
+		 * this stack for every </font> tag.  If we don't add anything
+		 * then we'll pop something that we shouldn't when we hit this
+		 * corresponding </font>. */
+		*colors = g_slist_prepend(*colors,
+				*colors ? g_strdup((*colors)->data) : g_strdup("\033[#000000m"));
+	}
 
-		if (m >= len) {
-			g_string_append(dest, &src[*i]);
-			*i = len;
-			break;
+	attribute = g_datalist_get_data(&attributes, "face");
+	if (attribute != NULL) {
+		needendtag = TRUE;
+		g_string_append(dest, "<font ");
+		g_string_append_printf(dest, "face=\"%s\" ", attribute);
+	}
+
+	attribute = g_datalist_get_data(&attributes, "size");
+	if (attribute != NULL) {
+		if (!needendtag) {
+			needendtag = TRUE;
+			g_string_append(dest, "<font ");
 		}
 
-		if (src[m] == '=') {
-			n = vstart = m;
-			while (1) {
-				n++;
-
-				if (n >= len) {
-					m = n;
-					break;
-				}
-
-				if (src[n] == '"') {
-					if (!quote) {
-						quote = TRUE;
-						vstart = n;
-						continue;
-					} else {
-						done = 1;
-					}
-				}
-
-				if (!quote && ((src[n] == ' ') || (src[n] == '>')))
-					done = TRUE;
-
-				if (done) {
-					if (!g_ascii_strncasecmp(&src[*j+1], "FACE", m - *j - 1)) {
-						fontattr *f;
-
-						f = g_new(fontattr, 1);
-						f->type = FATYPE_FACE;
-						f->u.face = g_strndup(&src[vstart+1], n-vstart-1);
-						if (!ftattr)
-							ftattr = g_queue_new();
-						g_queue_push_tail(ftattr, f);
-						m = n;
-						break;
-					} else if (!g_ascii_strncasecmp(&src[*j+1], "SIZE", m - *j - 1)) {
-						fontattr *f;
-
-						f = g_new(fontattr, 1);
-						f->type = FATYPE_SIZE;
-						f->u.size = POINT_SIZE(strtol(&src[vstart+1], NULL, 10));
-						if (!ftattr)
-							ftattr = g_queue_new();
-						g_queue_push_tail(ftattr, f);
-						m = n;
-						break;
-					} else if (!g_ascii_strncasecmp(&src[*j+1], "COLOR", m - *j - 1)) {
-						fontattr *f;
-
-						f = g_new(fontattr, 1);
-						f->type = FATYPE_COLOR;
-						f->u.color = g_strndup(&src[vstart+1], n-vstart-1);
-						if (!ftattr)
-							ftattr = g_queue_new();
-						g_queue_push_head(ftattr, f);
-						m = n;
-						break;
-					} else {
-						fontattr *f;
-
-						f = g_new(fontattr, 1);
-						f->type = FATYPE_JUNK;
-						f->u.junk = g_strndup(&src[*j+1], n-*j);
-						if (!ftattr)
-							ftattr = g_queue_new();
-						g_queue_push_tail(ftattr, f);
-						m = n;
-						break;
-					}
+		g_string_append_printf(dest, "size=\"%d\" ",
+				POINT_SIZE(strtol(attribute, NULL, 10)));
+	}
 
-				}
-			}
-		}
-
-		if (src[m] == ' ')
-			*j = m;
-
-		if (src[m] == '>') {
-			gboolean needendtag = FALSE;
-			fontattr *f;
-			GString *tmp = g_string_new(NULL);
-
-			if (!g_queue_is_empty(ftattr)) {
-				while ((f = g_queue_pop_tail(ftattr))) {
-					switch (f->type) {
-					case FATYPE_SIZE:
-						if (!needendtag) {
-							needendtag = TRUE;
-							g_string_append(dest, "<font ");
-						}
-
-						g_string_append_printf(dest, "size=\"%d\" ", f->u.size);
-						break;
-					case FATYPE_FACE:
-						if (!needendtag) {
-							needendtag = TRUE;
-							g_string_append(dest, "<font ");
-						}
-
-						g_string_append_printf(dest, "face=\"%s\" ", f->u.face);
-						break;
-					case FATYPE_JUNK:
-						if (!needendtag) {
-							needendtag = TRUE;
-							g_string_append(dest, "<font ");
-						}
+	if (needendtag) {
+		dest->str[dest->len-1] = '>';
+		*tags = g_slist_prepend(*tags, g_strdup("</font>"));
+		g_string_free(tmp, TRUE);
+	} else {
+		*tags = g_slist_prepend(*tags, tmp->str);
+		g_string_free(tmp, FALSE);
+	}
 
-						g_string_append(dest, f->u.junk);
-						break;
-
-					case FATYPE_COLOR:
-						if (needendtag) {
-							g_string_append(tmp, "</font>");
-							dest->str[dest->len-1] = '>';
-							needendtag = TRUE;
-						}
-
-						g_string_append(tmp, *colors ? (*colors)->data : "\033[#000000m");
-						g_string_append_printf(dest, "\033[%sm", f->u.color);
-						*colors = g_slist_prepend(*colors,
-								g_strdup_printf("\033[%sm", f->u.color));
-						break;
-					}
-					fontattr_free(f);
-				}
-
-				g_queue_free(ftattr);
-				ftattr = NULL;
-
-				if (needendtag) {
-					dest->str[dest->len-1] = '>';
-					*tags = g_slist_prepend(*tags, g_strdup("</font>"));
-					g_string_free(tmp, TRUE);
-				} else {
-					*tags = g_slist_prepend(*tags, tmp->str);
-					g_string_free(tmp, FALSE);
-				}
-			}
-
-			*i = *j = m;
-			break;
-		}
-	}
+	g_datalist_clear(&attributes);
 }
 
 char *yahoo_html_to_codes(const char *src)
 {
 	GSList *colors = NULL;
+
+	/**
+	 * A stack of char*s where each char* is the string that should be
+	 * appended to dest in order to close all the tags that were opened
+	 * by a <font> tag.
+	 */
 	GSList *tags = NULL;
+
 	size_t src_len;
 	int i, j;
 	GString *dest;
 	char *esc;
-	GQueue *ftattr = NULL;
-	gboolean no_more_specials = FALSE;
+	gboolean no_more_gt_brackets = FALSE;
+	gchar *tag, *tag_name;
+	gboolean is_closing_tag;
+	CurrentMsgState current_state;
+
+	memset(&current_state, 0, sizeof(current_state));
 
 	src_len = strlen(src);
 	dest = g_string_sized_new(src_len);
 
 	for (i = 0; i < src_len; i++) {
-
-		if (src[i] == '<' && !no_more_specials) {
+		if (src[i] == '<' && !no_more_gt_brackets) {
+			/* The start of an HTML tag  */
 			j = i;
 
-			while (1) {
-				j++;
-
-				if (j >= src_len) { /* no '>' */
-					g_string_append_c(dest, src[i]);
-					no_more_specials = TRUE;
-					break;
-				}
+			while (j++ < src_len) {
+				if (src[j] != '>') {
+					if (src[j] == '"') {
+						/* We're inside a quoted attribute value. Skip to the end */
+						j++;
+						while (j != src_len && src[j] != '"')
+							j++;
+					} else if (src[j] == '\'') {
+						/* We're inside a quoted attribute value. Skip to the end */
+						j++;
+						while (j != src_len && src[j] != '\'')
+							j++;
+					}
+					if (j != src_len)
+						/* Keep looking for the end of this tag */
+						continue;
 
-				if (src[j] == '<') {
-					/* FIXME: This doesn't convert outgoing entities.
-					 *        However, I suspect this case may never
-					 *        happen anymore because of the entities.
-					 */
-					g_string_append_len(dest, &src[i], j - i);
-					i = j - 1;
-					if (ftattr) {
-						fontattr *f;
-
-						while ((f = g_queue_pop_head(ftattr)))
-							fontattr_free(f);
-						g_queue_free(ftattr);
-						ftattr = NULL;
-					}
+					/* This < has no corresponding > */
+					g_string_append_c(dest, src[i]);
+					no_more_gt_brackets = TRUE;
 					break;
 				}
 
-				if (src[j] == ' ') {
-					if (!g_ascii_strncasecmp(&src[i+1], "BODY", j - i - 1)) {
-						char *t = strchr(&src[j], '>');
-						if (!t) {
-							g_string_append(dest, &src[i]);
-							i = src_len;
-							break;
-						} else {
-							i = t - src;
-							break;
+				tag = g_strndup(src + i, j - i + 1);
+				tag_name = yahoo_markup_get_tag_name(tag, &is_closing_tag);
+
+				if (g_str_equal(tag_name, "a")) {
+					const char *start;
+					const char *end;
+					GData *attributes;
+					const char *attribute;
+
+					/*
+					 * TODO: Ideally we would replace this:
+					 * <a href="http://pidgin.im/">Pidgin</a>
+					 * with this:
+					 * Pidgin (http://pidgin.im/)
+					 *
+					 * Currently we drop the text within the <a> tag and
+					 * just show the URL.  Doing it the fancy way is
+					 * complicated when dealing with HTML tags within the
+					 * <a> tag.
+					 */
+
+					/* Append the URL */
+					purple_markup_find_tag(tag_name, tag, &start, &end, &attributes);
+					attribute = g_datalist_get_data(&attributes, "href");
+					if (attribute != NULL) {
+						if (purple_str_has_prefix(attribute, "mailto:"))
+							attribute += 7;
+						g_string_append(dest, attribute);
+					}
+					g_datalist_clear(&attributes);
+
+					/* Skip past the closing </a> tag */
+					end = purple_strcasestr(src + j, "</a>");
+					if (end != NULL)
+						j = end - src + 3;
+
+				} else if (g_str_equal(tag_name, "font")) {
+					parse_font_tag(dest, tag_name, tag, &colors, &tags);
+				} else if (g_str_equal(tag_name, "b")) {
+					g_string_append(dest, "\033[1m");
+					current_state.bold = TRUE;
+				} else if (g_str_equal(tag_name, "/b")) {
+					if (current_state.bold) {
+						g_string_append(dest, "\033[x1m");
+						current_state.bold = FALSE;
+					}
+				} else if (g_str_equal(tag_name, "i")) {
+					current_state.italic = TRUE;
+					g_string_append(dest, "\033[2m");
+				} else if (g_str_equal(tag_name, "/i")) {
+					if (current_state.italic) {
+						g_string_append(dest, "\033[x2m");
+						current_state.italic = FALSE;
+					}
+				} else if (g_str_equal(tag_name, "u")) {
+					current_state.underline = TRUE;
+					g_string_append(dest, "\033[4m");
+				} else if (g_str_equal(tag_name, "/u")) {
+					if (current_state.underline) {
+						g_string_append(dest, "\033[x4m");
+						current_state.underline = FALSE;
+					}
+				} else if (g_str_equal(tag_name, "/a")) {
+					/* Do nothing */
+				} else if (g_str_equal(tag_name, "br")) {
+					g_string_append_c(dest, '\n');
+				} else if (g_str_equal(tag_name, "/font")) {
+					if (tags != NULL) {
+						char *etag = tags->data;
+						tags = g_slist_delete_link(tags, tags);
+						g_string_append(dest, etag);
+						if (colors != NULL) {
+							g_free(colors->data);
+							colors = g_slist_delete_link(colors, colors);
 						}
-					} else if (!g_ascii_strncasecmp(&src[i+1], "A HREF=\"", j - i - 1)) {
-						j += 7;
-						g_string_append(dest, "\033[lm");
-						if (purple_str_has_prefix(src + j, "mailto:"))
-							j += sizeof("mailto:") - 1;
-						while (1) {
-							g_string_append_c(dest, src[j]);
-							if (++j >= src_len) {
-								i = src_len;
-								break;
-							}
-							if (src[j] == '"') {
-								g_string_append(dest, "\033[xlm");
-								while (1) {
-									if (++j >= src_len) {
-										i = src_len;
-										break;
-									}
-									if (!g_ascii_strncasecmp(&src[j], "</A>", 4)) {
-										j += 3;
-										break;
-									}
-								}
-								i = j;
-								break;
-							}
-						}
-					} else if (!g_ascii_strncasecmp(&src[i+1], "SPAN", j - i - 1)) { /* drop span tags */
-						while (1) {
-							if (++j >= src_len) {
-								g_string_append(dest, &src[i]);
-								i = src_len;
-								break;
-							}
-							if (src[j] == '>') {
-								i = j;
-								break;
-							}
-						}
-					} else if (g_ascii_strncasecmp(&src[i+1], "FONT", j - i - 1)) { /* not interested! */
-						while (1) {
-							if (++j >= src_len) {
-								g_string_append(dest, &src[i]);
-								i = src_len;
-								break;
-							}
-							if (src[j] == '>') {
-								g_string_append_len(dest, &src[i], j - i + 1);
-								i = j;
-								break;
-							}
-						}
-					} else { /* yay we have a font tag */
-						_parse_font_tag(src, dest, &i, &j, src_len, &colors, &tags, ftattr);
+						g_free(etag);
 					}
-
-					break;
 				}
 
-				if (src[j] == '>') {
-					/* This has some problems like the FIXME for the
-					 * '<' case. and like that case, I suspect the case
-					 * that this has problems is won't happen anymore anyway.
-					 */
-					int sublen = j - i - 1;
-
-					if (sublen) {
-						if (!g_ascii_strncasecmp(&src[i+1], "B", sublen)) {
-							g_string_append(dest, "\033[1m");
-						} else if (!g_ascii_strncasecmp(&src[i+1], "/B", sublen)) {
-							g_string_append(dest, "\033[x1m");
-						} else if (!g_ascii_strncasecmp(&src[i+1], "I", sublen)) {
-							g_string_append(dest, "\033[2m");
-						} else if (!g_ascii_strncasecmp(&src[i+1], "/I", sublen)) {
-							g_string_append(dest, "\033[x2m");
-						} else if (!g_ascii_strncasecmp(&src[i+1], "U", sublen)) {
-							g_string_append(dest, "\033[4m");
-						} else if (!g_ascii_strncasecmp(&src[i+1], "/U", sublen)) {
-							g_string_append(dest, "\033[x4m");
-						} else if (!g_ascii_strncasecmp(&src[i+1], "/A", sublen)) {
-							g_string_append(dest, "\033[xlm");
-						} else if (!g_ascii_strncasecmp(&src[i+1], "BR", sublen)) {
-							g_string_append_c(dest, '\n');
-						} else if (!g_ascii_strncasecmp(&src[i+1], "/BODY", sublen)) {
-							/* mmm, </body> tags. *BURP* */
-						} else if (!g_ascii_strncasecmp(&src[i+1], "/SPAN", sublen)) {
-							/* </span> tags. dangerously close to </spam> */
-						} else if (!g_ascii_strncasecmp(&src[i+1], "/FONT", sublen) && tags != NULL) {
-							char *etag;
-
-							etag = tags->data;
-							tags = g_slist_delete_link(tags, tags);
-							if (etag) {
-								g_string_append(dest, etag);
-								if (!strcmp(etag, "</font>")) {
-									if (colors != NULL) {
-										g_free(colors->data);
-										colors = g_slist_delete_link(colors, colors);
-									}
-								}
-								g_free(etag);
-							}
-						} else {
-							g_string_append_len(dest, &src[i], j - i + 1);
-						}
-					} else {
-						g_string_append_len(dest, &src[i], j - i + 1);
-					}
-
-					i = j;
-					break;
-				}
-
+				i = j;
+				g_free(tag);
+				g_free(tag_name);
+				break;
 			}
 
 		} else {
@@ -1058,7 +911,7 @@
 	}
 
 	esc = g_strescape(dest->str, NULL);
-	purple_debug_misc("yahoo", "yahoo_html_to_codes:  Returning string: '%s'.\n", esc);
+	purple_debug_misc("yahoo", "yahoo_html_to_codes(%s)=%s\n", src, esc);
 	g_free(esc);
 
 	yahoo_htc_list_cleanup(colors);
--- a/libpurple/server.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/server.c	Mon Aug 24 17:20:46 2009 +0900
@@ -603,13 +603,10 @@
 	 */
 	flags |= PURPLE_MESSAGE_RECV;
 
-	if (PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc))->set_permit_deny == NULL) {
-		/* protocol does not support privacy, handle it ourselves */
-		if (!purple_privacy_check(account, who)) {
-			purple_signal_emit(purple_conversations_get_handle(), "blocked-im-msg",
-					account, who, msg, flags, (unsigned int)mtime);
-			return;
-		}
+	if (!purple_privacy_check(account, who)) {
+		purple_signal_emit(purple_conversations_get_handle(), "blocked-im-msg",
+				account, who, msg, flags, (unsigned int)mtime);
+		return;
 	}
 
 	/*
--- a/libpurple/smiley.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/smiley.c	Mon Aug 24 17:20:46 2009 +0900
@@ -80,7 +80,7 @@
  * XML descriptor file layout                                                 *
  ******************************************************************************
  *
- * Althought we are creating the profile XML structure here, now we
+ * Although we are creating the profile XML structure here, now we
  * won't handle it.
  * So, we just add one profile named "default" that has no associated
  * account elements, and have only the smiley_set that will contain
@@ -163,14 +163,14 @@
 }
 
 static xmlnode *
-smileys_to_xmlnode()
+smileys_to_xmlnode(void)
 {
 	xmlnode *root_node, *profile_node, *smileyset_node;
 
 	root_node = xmlnode_new(XML_ROOT_TAG);
 	xmlnode_set_attrib(root_node, "version", "1.0");
 
-	/* See the top comment's above to understand why initial tag elements
+	/* See the top comments above to understand why initial tag elements
 	 * are not being considered by now. */
 	profile_node = xmlnode_new(XML_PROFILE_TAG);
 	if (profile_node) {
@@ -188,7 +188,7 @@
 }
 
 static void
-sync_smileys()
+sync_smileys(void)
 {
 	xmlnode *root_node;
 	char *data;
@@ -216,7 +216,7 @@
 }
 
 static void
-purple_smileys_save()
+purple_smileys_save(void)
 {
 	if (save_timer == 0)
 		save_timer = purple_timeout_add_seconds(5, save_smileys_cb, NULL);
@@ -248,7 +248,7 @@
 }
 
 static void
-purple_smileys_load()
+purple_smileys_load(void)
 {
 	xmlnode *root_node, *profile_node;
 	xmlnode *smileyset_node = NULL;
@@ -262,7 +262,7 @@
 	if (root_node == NULL)
 		return;
 
-	/* See the top comment's above to understand why initial tag elements
+	/* See the top comments above to understand why initial tag elements
 	 * are not being considered by now. */
 	profile_node = xmlnode_get_child(root_node, XML_PROFILE_TAG);
 	if (profile_node)
@@ -456,7 +456,7 @@
 }
 
 /*********************************************************************
- * Other Stuff                                                             *
+ * Other Stuff                                                       *
  *********************************************************************/
 
 static char *get_file_full_path(const char *filename)
@@ -876,7 +876,7 @@
 }
 
 void
-purple_smileys_init()
+purple_smileys_init(void)
 {
 	smiley_shortcut_index = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
 	smiley_checksum_index = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
@@ -887,7 +887,7 @@
 }
 
 void
-purple_smileys_uninit()
+purple_smileys_uninit(void)
 {
 	if (save_timer != 0) {
 		purple_timeout_remove(save_timer);
--- a/libpurple/smiley.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/smiley.h	Mon Aug 24 17:20:46 2009 +0900
@@ -95,7 +95,7 @@
 purple_smiley_new_from_file(const char *shortcut, const char *filepath);
 
 /**
- * Destroys the custom smiley and release the associated resources.
+ * Destroys the custom smiley and releases the associated resources.
  *
  * @param smiley    The custom smiley.
  */
@@ -183,7 +183,7 @@
  * If the custom smiley has data and the file exists in the cache, this
  * will return a full path to the cached file.
  *
- * In general, it is not appropriate to be poking in the file cached
+ * In general, it is not appropriate to be poking in the file cache
  * directly.  If you find yourself wanting to use this function, think
  * very long and hard about it, and then don't.
  *
--- a/libpurple/tests/test_yahoo_util.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/libpurple/tests/test_yahoo_util.c	Mon Aug 24 17:20:46 2009 +0900
@@ -25,6 +25,10 @@
 			yahoo_codes_to_html("plain <peanut"));
 	assert_string_equal_free("plain&gt; peanut",
 			yahoo_codes_to_html("plain> peanut"));
+	assert_string_equal_free("<font face='inva&gt;lid'>test</font>",
+			yahoo_codes_to_html("<font face='inva>lid'>test"));
+	assert_string_equal_free("&lt;font face=&apos;inva&gt;lid",
+			yahoo_codes_to_html("<font face='inva>lid"));
 
 	/* bold/italic/underline */
 	assert_string_equal_free("<b>bold</b>",
@@ -46,6 +50,10 @@
 	assert_string_equal_free("<b>bold <i>bolditalic <u>bolditalicunderline</u></i></b><i><u> italicunderline</u></i>",
 			yahoo_codes_to_html("\x1B[1mbold \x1B[2mbolditalic \x1B[4mbolditalicunderline\x1B[x1m italicunderline"));
 
+	/* link */
+	assert_string_equal_free("http://pidgin.im/",
+			yahoo_codes_to_html("\x1B[lmhttp://pidgin.im/\x1B[xlm"));
+
 #ifdef USE_CSS_FORMATTING
 	/* font color */
 	assert_string_equal_free("<span style='color: #0000FF'>blue</span>",
@@ -92,19 +100,105 @@
 			yahoo_codes_to_html("<font face='Georgia' size='32'>test"));
 	assert_string_equal_free("<font color='#FF0080'><font size='4' absz='15'>test</font></font>",
 			yahoo_codes_to_html("\x1B[35m<font size='15'>test"));
+	assert_string_equal_free(":&lt;",
+			yahoo_codes_to_html("<FADE #ff0000,#00ff00,#0000ff>:<</FADE>"));
 #endif /* !USE_CSS_FORMATTING */
 }
 END_TEST
 
+START_TEST(test_html_to_codes)
+{
+	assert_string_equal_free("plain",
+			yahoo_html_to_codes("plain"));
+	assert_string_equal_free("plain <peanut>",
+			yahoo_html_to_codes("plain &lt;peanut&gt;"));
+	assert_string_equal_free("plain <peanut",
+			yahoo_html_to_codes("plain &lt;peanut"));
+	assert_string_equal_free("plain> peanut",
+			yahoo_html_to_codes("plain&gt; peanut"));
+	assert_string_equal_free("plain >",
+			yahoo_html_to_codes("plain &gt;"));
+	assert_string_equal_free("plain > ",
+			yahoo_html_to_codes("plain &gt; "));
+	assert_string_equal_free("plain <",
+			yahoo_html_to_codes("plain &lt;"));
+	assert_string_equal_free("plain < ",
+			yahoo_html_to_codes("plain &lt; "));
+	assert_string_equal_free("plain &lt",
+			yahoo_html_to_codes("plain &lt"));
+	assert_string_equal_free("plain &",
+			yahoo_html_to_codes("plain &amp;"));
+
+	/* bold/italic/underline */
+	assert_string_equal_free("\x1B[1mbold\x1B[x1m",
+			yahoo_html_to_codes("<b>bold</b>"));
+	assert_string_equal_free("\x1B[2mitalic\x1B[x2m",
+			yahoo_html_to_codes("<i>italic</i>"));
+	assert_string_equal_free("\x1B[4munderline\x1B[x4m",
+			yahoo_html_to_codes("<u>underline</u>"));
+	assert_string_equal_free("no markup",
+			yahoo_html_to_codes("no</u> markup"));
+	assert_string_equal_free("\x1B[1mbold\x1B[x1m \x1B[2mitalic\x1B[x2m \x1B[4munderline\x1B[x4m",
+			yahoo_html_to_codes("<b>bold</b> <i>italic</i> <u>underline</u>"));
+	assert_string_equal_free("\x1B[1mbold \x1B[2mbolditalic\x1B[x2m\x1B[x1m\x1B[2m italic\x1B[x2m",
+			yahoo_html_to_codes("<b>bold <i>bolditalic</i></b><i> italic</i>"));
+	assert_string_equal_free("\x1B[1mbold \x1B[2mbolditalic\x1B[x2m\x1B[x1m\x1B[2m \x1B[4mitalicunderline\x1B[x4m\x1B[x2m",
+			yahoo_html_to_codes("<b>bold <i>bolditalic</i></b><i> <u>italicunderline</u></i>"));
+
+	/* link */
+	assert_string_equal_free("http://pidgin.im/",
+			yahoo_html_to_codes("<A HREF=\"http://pidgin.im/\">http://pidgin.im/</A>"));
+	assert_string_equal_free("mark@example.com",
+			yahoo_html_to_codes("<A HREF=\"mailto:mark@example.com\">mark@example.com</A>"));
+#if 0
+	assert_string_equal_free("Pidgin (http://pidgin.im/)",
+			yahoo_html_to_codes("<A HREF=\"http://pidgin.im/\">Pidgin</A>"));
+#endif
+
+	/* font nothing */
+	assert_string_equal_free("nothing",
+			yahoo_html_to_codes("<font>nothing</font>"));
+
+	/* font color */
+	assert_string_equal_free("\x1B[#E71414mred\x1B[#000000m",
+			yahoo_html_to_codes("<font color=\"#E71414\">red</font>"));
+	assert_string_equal_free("\x1B[#FF0000mred\x1B[#000000m \x1B[#0000FFmblue\x1B[#000000m black",
+			yahoo_html_to_codes("<font color=\"#FF0000\">red</font> <font color=\"#0000FF\">blue</font> black"));
+
+	/* font size */
+	assert_string_equal_free("<font size=\"10\">test</font>",
+			yahoo_html_to_codes("<font size=\"2\">test</font>"));
+	assert_string_equal_free("<font size=\"30\">test</font>",
+			yahoo_html_to_codes("<font size=\"6\">test</font>"));
+
+	/* combinations */
+	assert_string_equal_free("\x1B[#FF0000m<font size=\"8\">redsmall</font> rednormal\x1B[#000000m",
+			yahoo_html_to_codes("<font color=\"#FF0000\"><font size=\"1\">redsmall</font> rednormal</font>"));
+
+	assert_string_equal_free("\x1B[#FF0000m<font size=\"8\">redsmall</font> \x1B[#00FF00mgreennormal\x1B[#FF0000m rednormal\x1B[#000000m",
+			yahoo_html_to_codes("<font color=\"#FF0000\"><font size=\"1\">redsmall</font> <font color=\"#00FF00\">greennormal</font> rednormal</font>"));
+
+	assert_string_equal_free("\x1B[1mbold \x1B[#FF0000mred <font face=\"Comic Sans MS\" size=\"20\">larger \x1B[#000000mbacktoblack <font size=\"12\">normalsize</font>\x1B[#FF0000m</font>\x1B[#000000m\x1B[x1m",
+			yahoo_html_to_codes("<b>bold <font color=\"#FF0000\">red <font face=\"Comic Sans MS\" size=\"5\">larger <font color=\"#000000\">backtoblack <font size=\"3\">normalsize</font></font></font></font></b>"));
+}
+END_TEST
+
 Suite *
 yahoo_util_suite(void)
 {
-	Suite *s = suite_create("Yahoo Utility Functions");
+	Suite *s;
+	TCase *tc;
 
-	TCase *tc = tcase_create("Convert to Numeric");
+	s = suite_create("Yahoo Utility Functions");
+
+	tc = tcase_create("Convert IM from network format to HTML");
 	tcase_add_unchecked_fixture(tc, setup_codes_to_html, teardown_codes_to_html);
 	tcase_add_test(tc, test_codes_to_html);
 	suite_add_tcase(s, tc);
 
+	tc = tcase_create("Convert IM from HTML to network format");
+	tcase_add_test(tc, test_html_to_codes);
+	suite_add_tcase(s, tc);
+
 	return s;
 }
--- a/pidgin/gtkblist-theme.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/pidgin/gtkblist-theme.c	Mon Aug 24 17:20:46 2009 +0900
@@ -373,70 +373,94 @@
 	g_object_class_install_property(obj_class, PROP_BACKGROUND_COLOR, pspec);
 
 	pspec = g_param_spec_pointer("layout", _("Layout"),
-			_("The layout of icons, name, and status of the blist"),
+			_("The layout of icons, name, and status of the buddy list"),
 			G_PARAM_READWRITE);
 
 	g_object_class_install_property(obj_class, PROP_LAYOUT, pspec);
 
 	/* Group */
+	/* Note to translators: These two strings refer to the background color
+	   of a buddy list group when in its expanded state */
 	pspec = g_param_spec_boxed("expanded-color", _("Expanded Background Color"),
 			_("The background color of an expanded group"),
 			GDK_TYPE_COLOR, G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_EXPANDED_COLOR, pspec);
 
+	/* Note to translators: These two strings refer to the font and color
+	   of a buddy list group when in its expanded state */
 	pspec = g_param_spec_pointer("expanded-text", _("Expanded Text"),
 			_("The text information for when a group is expanded"),
 			G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_EXPANDED_TEXT, pspec);
 
+	/* Note to translators: These two strings refer to the background color
+	   of a buddy list group when in its collapsed state */
 	pspec = g_param_spec_boxed("collapsed-color", _("Collapsed Background Color"),
 			_("The background color of a collapsed group"),
 			GDK_TYPE_COLOR, G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_COLLAPSED_COLOR, pspec);
 
+	/* Note to translators: These two strings refer to the font and color
+	   of a buddy list group when in its collapsed state */
 	pspec = g_param_spec_pointer("collapsed-text", _("Collapsed Text"),
 			_("The text information for when a group is collapsed"),
 			G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_COLLAPSED_TEXT, pspec);
 
 	/* Buddy */
+	/* Note to translators: These two strings refer to the background color
+	   of a buddy list contact or chat room */
 	pspec = g_param_spec_boxed("contact-color", _("Contact/Chat Background Color"),
 			_("The background color of a contact or chat"),
 			GDK_TYPE_COLOR, G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_CONTACT_COLOR, pspec);
 
+	/* Note to translators: These two strings refer to the font and color
+	   of a buddy list contact when in its expanded state */
 	pspec = g_param_spec_pointer("contact", _("Contact Text"),
 			_("The text information for when a contact is expanded"),
 			G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_CONTACT, pspec);
 
-	pspec = g_param_spec_pointer("online", _("On-line Text"),
+	/* Note to translators: These two strings refer to the font and color
+	   of a buddy list buddy when it is online */
+	pspec = g_param_spec_pointer("online", _("Online Text"),
 			_("The text information for when a buddy is online"),
 			G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_ONLINE, pspec);
 
+	/* Note to translators: These two strings refer to the font and color
+	   of a buddy list buddy when it is away */
 	pspec = g_param_spec_pointer("away", _("Away Text"),
 			_("The text information for when a buddy is away"),
 			G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_AWAY, pspec);
 
-	pspec = g_param_spec_pointer("offline", _("Off-line Text"),
-			_("The text information for when a buddy is off-line"),
+	/* Note to translators: These two strings refer to the font and color
+	   of a buddy list buddy when it is offline */
+	pspec = g_param_spec_pointer("offline", _("Offline Text"),
+			_("The text information for when a buddy is offline"),
 			G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_OFFLINE, pspec);
 
+	/* Note to translators: These two strings refer to the font and color
+	   of a buddy list buddy when it is idle */
 	pspec = g_param_spec_pointer("idle", _("Idle Text"),
 			_("The text information for when a buddy is idle"),
 			G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_IDLE, pspec);
 
+	/* Note to translators: These two strings refer to the font and color
+	   of a buddy list buddy when they have sent you a new message */
 	pspec = g_param_spec_pointer("message", _("Message Text"),
 			_("The text information for when a buddy has an unread message"),
 			G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_MESSAGE, pspec);
 
+	/* Note to translators: These two strings refer to the font and color
+	   of a buddy list buddy when they have sent you a new message */
 	pspec = g_param_spec_pointer("message_nick_said", _("Message (Nick Said) Text"),
-			_("The text information for when a chat has an unread message that mentions your nick"),
+			_("The text information for when a chat has an unread message that mentions your nickname"),
 			G_PARAM_READWRITE);
 	g_object_class_install_property(obj_class, PROP_MESSAGE_NICK_SAID, pspec);
 
--- a/pidgin/gtkblist.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/pidgin/gtkblist.c	Mon Aug 24 17:20:46 2009 +0900
@@ -4154,6 +4154,7 @@
 			name_color = "dim grey";
 		} else if (!purple_presence_is_online(presence)) {
 			namefont = pidgin_blist_theme_get_offline_text_info(theme);
+			name_color = "dim grey";
 			statusfont = pidgin_blist_theme_get_status_text_info(theme);
 		} else if (purple_presence_is_available(presence)) {
 			namefont = pidgin_blist_theme_get_online_text_info(theme);
@@ -4162,6 +4163,13 @@
 			namefont = pidgin_blist_theme_get_away_text_info(theme);
 			statusfont = pidgin_blist_theme_get_status_text_info(theme);
 		}
+	} else {
+		if (!selected
+				&& (purple_presence_is_idle(presence)
+							|| !purple_presence_is_online(presence)))
+		{
+			name_color = "dim grey";
+		}
 	}
 
 	name_color = theme_font_get_color_default(namefont, name_color);
@@ -6411,10 +6419,13 @@
 			ihrs = (t - idle_secs) / 3600;
 			imin = ((t - idle_secs) / 60) % 60;
 
-			if (!selected && theme != NULL && (pair = pidgin_blist_theme_get_idle_text_info(theme)) != NULL)
+			if (selected)
+				textcolor = NULL;
+			else if (theme != NULL && (pair = pidgin_blist_theme_get_idle_text_info(theme)) != NULL)
 				textcolor = pidgin_theme_font_get_color_describe(pair);
 			else
-				textcolor = NULL;
+				/* If no theme them default to making idle buddy names grey */
+				textcolor = "dim grey";
 
 			if (textcolor) {
 				idle = g_strdup_printf("<span color='%s' font_desc='%s'>%d:%02d</span>",
@@ -7143,7 +7154,7 @@
 	                          data->chat_data.rq_data.sg, data->group_combo,
 	                          TRUE, NULL);
 
-	data->autojoin = gtk_check_button_new_with_mnemonic(_("Auto_join when account becomes online."));
+	data->autojoin = gtk_check_button_new_with_mnemonic(_("Auto_join when account connects."));
 	data->persistent = gtk_check_button_new_with_mnemonic(_("_Remain in chat after window is closed."));
 	gtk_box_pack_start(GTK_BOX(vbox), data->autojoin, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(vbox), data->persistent, FALSE, FALSE, 0);
--- a/pidgin/gtkconv.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/pidgin/gtkconv.c	Mon Aug 24 17:20:46 2009 +0900
@@ -1015,6 +1015,12 @@
 }
 
 static void
+menu_join_chat_cb(gpointer data, guint action, GtkWidget *widget)
+{
+	pidgin_blist_joinchat_show();
+}
+
+static void
 savelog_writefile_cb(void *user_data, const char *filename)
 {
 	PurpleConversation *conv = (PurpleConversation *)user_data;
@@ -3189,6 +3195,8 @@
 
 	{ N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb,
 			0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW },
+	{ N_("/Conversation/Join a _Chat..."), NULL, menu_join_chat_cb,
+			0, "<StockItem>", PIDGIN_STOCK_CHAT },
 
 	{ "/Conversation/sep0", NULL, NULL, 0, "<Separator>", NULL },
 
--- a/pidgin/gtkdialogs.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/pidgin/gtkdialogs.c	Mon Aug 24 17:20:46 2009 +0900
@@ -170,9 +170,7 @@
 	{N_("Esperanto"),           "eo", "Stéphane Fillod", "fillods@users.sourceforge.net"},
 	{N_("Spanish"),             "es", "Javier Fernández-Sanguino Peña", "jfs@debian.org"},
 	{N_("Estonian"),            "et", "Ivar Smolin", "okul@linux.ee"},
-	{N_("Euskera(Basque)"),     "eu", "Mikel Pascual Aldabaldetreku", "mikel.paskual@gmail.com"},
-	{N_("Euskera(Basque)"),     "eu", "Iñaki Larrañaga Murgoitio", "dooteo@zundan.com"},
-	{N_("Euskera(Basque)"),     "eu", "Hizkuntza Politikarako Sailburuordetza", "hizkpol@ej-gv.es"},
+	{N_("Basque"),              "eu", "Mikel Pascual Aldabaldetreku", "mikel.paskual@gmail.com"},
 	{N_("Persian"),             "fa", "Elnaz Sarbar", "elnaz@farsiweb.info"},
 	{N_("Persian"),             "fa", "Meelad Zakaria", "meelad@farsiweb.info"},
 	{N_("Persian"),             "fa", "Roozbeh Pournader ", "roozbeh@farsiweb.info"},
@@ -257,6 +255,8 @@
 	{N_("Spanish"),             "es", "Nicolás Lichtmaier", NULL},
 	{N_("Spanish"),             "es", "Amaya Rodrigo", NULL},
 	{N_("Spanish"),             "es", "Alejandro G Villar", NULL},
+	{N_("Basque"),              "eu", "Iñaki Larrañaga Murgoitio", "dooteo@zundan.com"},
+	{N_("Basque"),              "eu", "Hizkuntza Politikarako Sailburuordetza", "hizkpol@ej-gv.es"},
 	{N_("Finnish"),             "fi", "Arto Alakulju", NULL},
 	{N_("Finnish"),             "fi", "Tero Kuusela", NULL},
 	{N_("French"),              "fr", "Sébastien François", NULL},
@@ -472,7 +472,13 @@
 				"http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"));
 	g_string_append_printf(str, _("<FONT SIZE=\"4\">Help via e-mail:</FONT>"
 				" <A HREF=\"mailto:support@pidgin.im\">support@pidgin.im</A>"
-				"<BR/><BR/>"));
+				" (This is a"
+				" <A HREF=\"http://pidgin.im/cgi-bin/mailman/listinfo/support\">"
+				"mailing list</A>, and messages sent here are"
+				" <A HREF=\"http://pidgin.im/pipermail/support/\">publicly"
+				" archived!</A>  Furthermore, we do <I><B>not</B></I> support"
+				" MXit, Facebook, Skype, or any other third-party plugins on"
+				" this list.)<BR/><BR/>"));
 	g_string_append_printf(str, _("<FONT SIZE=\"4\">IRC Channel:</FONT> "
 				"#pidgin on irc.freenode.net<BR><BR>"));
 	g_string_append_printf(str, _("<FONT SIZE=\"4\">XMPP MUC:</FONT> "
--- a/pidgin/gtkmain.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/pidgin/gtkmain.c	Mon Aug 24 17:20:46 2009 +0900
@@ -406,34 +406,34 @@
 	if (terse) {
 		text = g_strdup_printf(_("%s %s. Try `%s -h' for more information.\n"), PIDGIN_NAME, DISPLAY_VERSION, name);
 	} else {
+		GString *str = g_string_new(NULL);
+		g_string_append_printf(str, "%s %s\n", PIDGIN_NAME, DISPLAY_VERSION);
+		g_string_append_printf(str, _("Usage: %s [OPTION]...\n\n"), name);
+		g_string_append_printf(str, "  -c, --config=DIR    %s\n",
+				_("use DIR for config files"));
+		g_string_append_printf(str, "  -d, --debug         %s\n",
+				_("print debugging messages to stdout"));
+		g_string_append_printf(str, "  -f, --force-online  %s\n",
+				_("force online, regardless of network status"));
+		g_string_append_printf(str, "  -h, --help          %s\n",
+				_("display this help and exit"));
+		g_string_append_printf(str, "  -m, --multiple      %s\n",
+				_("allow multiple instances"));
+		g_string_append_printf(str, "  -n, --nologin       %s\n",
+				_("don't automatically login"));
+		g_string_append_printf(str, "  -l, --login[=NAME]  %s\n",
+				_("enable specified account(s) (optional argument NAME\n"
+				  "                      "
+				  "specifies account(s) to use, separated by commas."));
+		g_string_append_printf(str, "                      %s\n",
+				_("Without this only the first account will be enabled)."));
 #ifndef WIN32
-		text = g_strdup_printf(_("%s %s\n"
-		       "Usage: %s [OPTION]...\n\n"
-		       "  -c, --config=DIR    use DIR for config files\n"
-		       "  -d, --debug         print debugging messages to stdout\n"
-		       "  -f, --force-online  force online, regardless of network status\n"
-		       "  -h, --help          display this help and exit\n"
-		       "  -m, --multiple      do not ensure single instance\n"
-		       "  -n, --nologin       don't automatically login\n"
-		       "  -l, --login[=NAME]  enable specified account(s) (optional argument NAME\n"
-		       "                      specifies account(s) to use, separated by commas.\n"
-		       "                      Without this only the first account will be enabled).\n"
-		       "  --display=DISPLAY   X display to use\n"
-		       "  -v, --version       display the current version and exit\n"), PIDGIN_NAME, DISPLAY_VERSION, name);
-#else
-		text = g_strdup_printf(_("%s %s\n"
-		       "Usage: %s [OPTION]...\n\n"
-		       "  -c, --config=DIR    use DIR for config files\n"
-		       "  -d, --debug         print debugging messages to stdout\n"
-		       "  -f, --force-online  force online, regardless of network status\n"
-		       "  -h, --help          display this help and exit\n"
-		       "  -m, --multiple      do not ensure single instance\n"
-		       "  -n, --nologin       don't automatically login\n"
-		       "  -l, --login[=NAME]  enable specified account(s) (optional argument NAME\n"
-		       "                      specifies account(s) to use, separated by commas.\n"
-		       "                      Without this only the first account will be enabled).\n"
-		       "  -v, --version       display the current version and exit\n"), PIDGIN_NAME, DISPLAY_VERSION, name);
-#endif
+		g_string_append_printf(str, "  --display=DISPLAY   %s\n",
+				_("X display to use"));
+#endif /* !WIN32 */
+		g_string_append_printf(str, "  -v, --version       %s\n",
+				_("display the current version and exit"));
+		text = g_string_free(str, FALSE);
 	}
 
 	purple_print_utf8_to_console(stdout, text);
--- a/pidgin/gtkmedia.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/pidgin/gtkmedia.c	Mon Aug 24 17:20:46 2009 +0900
@@ -20,7 +20,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
 #include <string.h>
--- a/pidgin/gtkmedia.h	Wed Aug 19 16:19:45 2009 +0900
+++ b/pidgin/gtkmedia.h	Mon Aug 24 17:20:46 2009 +0900
@@ -21,7 +21,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA
  */
 
 #ifndef __GTKMEDIA_H_
--- a/pidgin/gtknotify.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/pidgin/gtknotify.c	Mon Aug 24 17:20:46 2009 +0900
@@ -60,6 +60,7 @@
 {
 	PurpleAccount *account;
 	PurplePounce *pounce;
+	char *pouncee;
 } PidginNotifyPounceData;
 
 
@@ -155,6 +156,7 @@
 				-1);
 		gtk_tree_store_remove(dialog->treemodel, &iter);
 
+		g_free(pounce_data->pouncee);
 		g_free(pounce_data);
 	}
 
@@ -173,8 +175,29 @@
 			PIDGIN_POUNCE_DATA, &pounce_data,
 			-1);
 
-	if (pounce_data != NULL)
+	if (pounce_data != NULL) {
+		g_free(pounce_data->pouncee);
 		g_free(pounce_data);
+	}
+}
+
+static void
+open_im_foreach(GtkTreeModel *model, GtkTreePath *path,
+		GtkTreeIter *iter, gpointer data)
+{
+	PidginNotifyPounceData *pounce_data;
+
+	gtk_tree_model_get(model, iter,
+			PIDGIN_POUNCE_DATA, &pounce_data,
+			-1);
+
+	if (pounce_data != NULL) {
+		PurpleConversation *conv;
+
+		conv = purple_conversation_new(PURPLE_CONV_TYPE_IM,
+				pounce_data->account, pounce_data->pouncee);
+		purple_conversation_present(conv);
+	}
 }
 
 static void
@@ -184,25 +207,69 @@
 	GList **list = data;
 	*list = g_list_prepend(*list, gtk_tree_path_copy(path));
 }
+
 static void
 pounce_response_dismiss()
 {
+	GtkTreeModel *model = GTK_TREE_MODEL(pounce_dialog->treemodel);
 	GtkTreeSelection *selection;
+	GtkTreeIter iter;
+	GtkTreeIter new_selection;
 	GList *list = NULL;
+	gboolean found_selection = FALSE;
 
 	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pounce_dialog->treeview));
 	gtk_tree_selection_selected_foreach(selection, delete_foreach, pounce_dialog);
 	gtk_tree_selection_selected_foreach(selection, append_to_list, &list);
 
+	g_return_if_fail(list != NULL);
+
+	if (list->next == NULL) {
+		gtk_tree_model_get_iter(model, &new_selection, list->data);
+		if (gtk_tree_model_iter_next(model, &new_selection))
+			found_selection = TRUE;
+		else {
+			/* This is the last thing in the list */
+			GtkTreePath *path;
+
+			/* Because gtk_tree_model_iter_prev doesn't exist... */
+			gtk_tree_model_get_iter(model, &new_selection, list->data);
+			path = gtk_tree_model_get_path(model, &new_selection);
+			if (gtk_tree_path_prev(path)) {
+				gtk_tree_model_get_iter(model, &new_selection, path);
+				found_selection = TRUE;
+			}
+
+			gtk_tree_path_free(path);
+		}
+	}
+
 	while (list) {
-		GtkTreeIter iter;
-		if (gtk_tree_model_get_iter(GTK_TREE_MODEL(pounce_dialog->treemodel), &iter,
-					list->data)) {
+		if (gtk_tree_model_get_iter(model, &iter, list->data)) {
 			gtk_tree_store_remove(GTK_TREE_STORE(pounce_dialog->treemodel), &iter);
 		}
 		gtk_tree_path_free(list->data);
 		list = g_list_delete_link(list, list);
 	}
+
+	if (gtk_tree_model_get_iter_first(model, &iter)) {
+		if (found_selection)
+			gtk_tree_selection_select_iter(selection, &new_selection);
+		else
+			gtk_tree_selection_select_iter(selection, &iter);
+	} else
+		pounce_response_close(pounce_dialog);
+}
+
+static void
+pounce_response_open_ims()
+{
+	GtkTreeSelection *selection;
+
+	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pounce_dialog->treeview));
+	gtk_tree_selection_selected_foreach(selection, open_im_foreach, pounce_dialog);
+
+	pounce_response_dismiss();
 }
 
 static void
@@ -241,6 +308,9 @@
 		case GTK_RESPONSE_DELETE_EVENT:
 			pounce_response_close(dialog);
 			break;
+		case GTK_RESPONSE_YES:
+			pounce_response_open_ims();
+			break;
 		case GTK_RESPONSE_NO:
 			pounce_response_dismiss();
 			break;
@@ -256,40 +326,47 @@
 pounce_row_selected_cb(GtkTreeView *tv, GtkTreePath *path,
 	GtkTreeViewColumn *col, gpointer data)
 {
-	GtkTreeIter iter;
 	GtkTreeSelection *selection;
-	gboolean selected;
-	GList *list;
+	int count;
 
 	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pounce_dialog->treeview));
 
-	selected = gtk_tree_selection_get_selected(selection,
-			NULL, &iter);
+	count = gtk_tree_selection_count_selected_rows(selection);
 
-	if (selected) {
-		PurplePounce *pounce;
+	if (count == 0) {
+		gtk_widget_set_sensitive(pounce_dialog->open_button, FALSE);
+		gtk_widget_set_sensitive(pounce_dialog->edit_button, FALSE);
+		gtk_widget_set_sensitive(pounce_dialog->dismiss_button, FALSE);
+	} else if (count == 1) {
+		GList *pounces;
+		GList *list;
 		PidginNotifyPounceData *pounce_data;
+		GtkTreeIter iter;
 
-		list = purple_pounces_get_all();
-
+		list = gtk_tree_selection_get_selected_rows(selection, NULL);
+		gtk_tree_model_get_iter(GTK_TREE_MODEL(pounce_dialog->treemodel),
+				&iter, list->data);
 		gtk_tree_model_get(GTK_TREE_MODEL(pounce_dialog->treemodel), &iter,
 				PIDGIN_POUNCE_DATA, &pounce_data,
 				-1);
-
-		gtk_widget_set_sensitive(pounce_dialog->edit_button, FALSE);
+		g_list_foreach(list, (GFunc)gtk_tree_path_free, NULL);
+		g_list_free(list);
 
-		for (; list != NULL; list = list->next) {
-			pounce = list->data;
+		pounces = purple_pounces_get_all();
+		for (; pounces != NULL; pounces = pounces->next) {
+			PurplePounce *pounce = pounces->data;
 			if (pounce == pounce_data->pounce) {
 				gtk_widget_set_sensitive(pounce_dialog->edit_button, TRUE);
 				break;
 			}
 		}
 
+		gtk_widget_set_sensitive(pounce_dialog->open_button, TRUE);
 		gtk_widget_set_sensitive(pounce_dialog->dismiss_button, TRUE);
 	} else {
+		gtk_widget_set_sensitive(pounce_dialog->open_button, TRUE);
 		gtk_widget_set_sensitive(pounce_dialog->edit_button, FALSE);
-		gtk_widget_set_sensitive(pounce_dialog->dismiss_button, FALSE);
+		gtk_widget_set_sensitive(pounce_dialog->dismiss_button, TRUE);
 	}
 
 
@@ -1354,6 +1431,7 @@
 	GdkPixbuf *icon;
 	GtkTreeIter iter;
 	PidginNotifyPounceData *pounce_data;
+	gboolean first = (pounce_dialog == NULL);
 
 	if (pounce_dialog == NULL)
 		pounce_dialog = pidgin_create_notification_dialog(PIDGIN_NOTIFY_POUNCE);
@@ -1364,6 +1442,7 @@
 
 	pounce_data->account = account;
 	pounce_data->pounce = pounce;
+	pounce_data->pouncee = g_strdup(purple_pounce_get_pouncee(pounce));
 
 	gtk_tree_store_append(pounce_dialog->treemodel, &iter, NULL);
 
@@ -1376,6 +1455,12 @@
 			PIDGIN_POUNCE_DATA, pounce_data,
 			-1);
 
+	if (first) {
+		GtkTreeSelection *selection =
+				gtk_tree_view_get_selection(GTK_TREE_VIEW(pounce_dialog->treeview));
+		gtk_tree_selection_select_iter(selection, &iter);
+	}
+
 	if (icon)
 		g_object_unref(icon);
 
@@ -1414,9 +1499,7 @@
 				G_TYPE_STRING, G_TYPE_POINTER);
 	}
 
-	dialog = gtk_dialog_new_with_buttons(NULL, NULL, 0,
-			GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
-			NULL);
+	dialog = gtk_dialog_new();
 
 	/* Setup the dialog */
 	gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BOX_SPACE);
@@ -1487,15 +1570,20 @@
 		gtk_window_set_title(GTK_WINDOW(dialog), _("New Pounces"));
 
 		button = gtk_dialog_add_button(GTK_DIALOG(dialog),
+						_("IM"), GTK_RESPONSE_YES);
+		gtk_widget_set_sensitive(button, FALSE);
+		spec_dialog->open_button = button;
+
+		button = gtk_dialog_add_button(GTK_DIALOG(dialog),
+						PIDGIN_STOCK_MODIFY, GTK_RESPONSE_APPLY);
+		gtk_widget_set_sensitive(button, FALSE);
+		spec_dialog->edit_button = button;
+
+		button = gtk_dialog_add_button(GTK_DIALOG(dialog),
 						_("Dismiss"), GTK_RESPONSE_NO);
 		gtk_widget_set_sensitive(button, FALSE);
 		spec_dialog->dismiss_button = button;
 
-		button = gtk_dialog_add_button(GTK_DIALOG(dialog),
-						PIDGIN_STOCK_EDIT, GTK_RESPONSE_APPLY);
-		gtk_widget_set_sensitive(button, FALSE);
-		spec_dialog->edit_button = button;
-
 		g_signal_connect(G_OBJECT(dialog), "response",
 						 G_CALLBACK(pounce_response_cb), spec_dialog);
 
@@ -1539,11 +1627,16 @@
 		gtk_label_set_markup(GTK_LABEL(label), _("<span weight=\"bold\" size=\"larger\">You have pounced!</span>"));
 
 		sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(spec_dialog->treeview));
-		gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
+		gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
 		g_signal_connect(G_OBJECT(sel), "changed",
 			G_CALLBACK(pounce_row_selected_cb), NULL);
+		g_signal_connect(G_OBJECT(spec_dialog->treeview), "row-activated",
+			G_CALLBACK(pounce_response_open_ims), NULL);
 	}
 
+	button = gtk_dialog_add_button(GTK_DIALOG(dialog),
+	                               GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
+
 	gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
 	gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
--- a/pidgin/pixmaps/Makefile.am	Wed Aug 19 16:19:45 2009 +0900
+++ b/pidgin/pixmaps/Makefile.am	Mon Aug 24 17:20:46 2009 +0900
@@ -448,28 +448,28 @@
 TOOLBAR_22_SCALABLE = \
 		toolbar/22/scalable/select-avatar.svg \
 		toolbar/22/scalable/video-call.svg \
-		toolbar/22/scalable/voice-call.svg
+		toolbar/22/scalable/audio-call.svg
 
 TOOLBAR_22 = \
 		toolbar/22/select-avatar.png \
 		toolbar/22/video-call.png \
-		toolbar/22/voice-call.png
+		toolbar/22/audio-call.png
 
 TOOLBAR_32_SCALABLE = \
 		toolbar/32/scalable/video-call.svg \
-		toolbar/32/scalable/voice-call.svg
+		toolbar/32/scalable/audio-call.svg
 
 TOOLBAR_32 = \
 		toolbar/32/video-call.png \
-		toolbar/32/voice-call.png
+		toolbar/32/audio-call.png
 
 TOOLBAR_48_SCALABLE = \
 		toolbar/48/scalable/video-call.svg \
-		toolbar/48/scalable/voice-call.svg
+		toolbar/48/scalable/audio-call.svg
 
 TOOLBAR_48 = \
 		toolbar/48/video-call.png \
-		toolbar/48/voice-call.png
+		toolbar/48/audio-call.png
 
 TRAY_16_ICO = \
 		tray/16/available_4bit.ico \
Binary file pidgin/pixmaps/status/11/invisible.png has changed
Binary file pidgin/pixmaps/toolbar/22/audio-call.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/pixmaps/toolbar/22/scalable/audio-call.svg	Mon Aug 24 17:20:46 2009 +0900
@@ -0,0 +1,795 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="24"
+   height="24"
+   id="svg3879"
+   sodipodi:version="0.32"
+   inkscape:version="0.46+devel r20974"
+   version="1.0"
+   sodipodi:docname="voice-24.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3881">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3617">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3619" />
+      <stop
+         style="stop-color:#0b0c0d;stop-opacity:1"
+         offset="1"
+         id="stop3621" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1.0338738,0,0,1.022703,49.113708,-252.03388)"
+       inkscape:collect="always"
+       xlink:href="#linearGradient4976"
+       id="linearGradient4984"
+       x1="-24.687374"
+       y1="245.84587"
+       x2="-24.687374"
+       y2="247.61009"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4976">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4978" />
+      <stop
+         style="stop-color:#808080;stop-opacity:1"
+         offset="1"
+         id="stop4980" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5677-7"
+       id="linearGradient5723-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038316,0,0,0.67291737,-299.60391,95.209072)"
+       x1="305.89481"
+       y1="-120.46718"
+       x2="306.04715"
+       y2="-120.46718" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5677-7">
+      <stop
+         style="stop-color:#ff2de7;stop-opacity:1"
+         offset="0"
+         id="stop5679-1" />
+      <stop
+         style="stop-color:#7b009b;stop-opacity:1"
+         offset="1"
+         id="stop5681-4" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043-9-6-1"
+       id="radialGradient5721-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.48374104,0.92161718,-1.0869289,0.53973041,10.51482,359.09454)"
+       cx="-306.03387"
+       cy="-120.8595"
+       fx="-306.03387"
+       fy="-120.8595"
+       r="3.03685" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5043-9-6-1">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5045-4-8-8" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5047-1-2-6" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5655-9"
+       id="linearGradient5719-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.52563657,0,0,0.74896722,153.12631,104.25845)"
+       x1="-300.82822"
+       y1="-126.31032"
+       x2="-300.82822"
+       y2="-114.83224" />
+    <linearGradient
+       id="linearGradient5655-9"
+       inkscape:collect="always">
+      <stop
+         id="stop5657-5"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1" />
+      <stop
+         id="stop5659-1"
+         offset="1"
+         style="stop-color:#707e83;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       y2="-36.569096"
+       x2="-219.25159"
+       y1="-43.842201"
+       x1="-219.25159"
+       gradientTransform="matrix(-0.78353222,0,0,0.63823472,-176.89854,41.230437)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5758"
+       xlink:href="#linearGradient5853"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5853"
+       inkscape:collect="always">
+      <stop
+         id="stop5855"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         id="stop5857"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5626"
+       id="linearGradient5632"
+       x1="-25.743168"
+       y1="-243.09763"
+       x2="-23.90864"
+       y2="-240.62437"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34459514,0,0,0.65761929,31.073819,161.60062)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5626">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop5628" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:0;"
+         offset="1"
+         id="stop5630" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4971"
+       id="linearGradient4977"
+       x1="-105.74262"
+       y1="-282.20282"
+       x2="-102.94624"
+       y2="-282.20282"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4971">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4973" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4975" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4786"
+       id="linearGradient4792"
+       x1="-106.91152"
+       y1="280.91522"
+       x2="-101.28181"
+       y2="282.32028"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.40915917,0,0,0.50230701,64.794864,-139.49239)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4786">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop4788" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop4790" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5206"
+       id="linearGradient5212"
+       x1="-304.49771"
+       y1="-142.89493"
+       x2="-262.4259"
+       y2="-143.92334"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5206">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop5208" />
+      <stop
+         style="stop-color:#dededd;stop-opacity:0;"
+         offset="1"
+         id="stop5210" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5388"
+       id="linearGradient5394"
+       x1="-283.80222"
+       y1="-143.74782"
+       x2="-283.80222"
+       y2="-141.12897"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.52812148,0,0,0.55524807,152.92759,81.21193)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5388">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop5390" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop5392" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5376"
+       id="radialGradient5382"
+       cx="-284.44626"
+       cy="-153.18155"
+       fx="-284.44626"
+       fy="-153.18155"
+       r="17.449057"
+       gradientTransform="matrix(0.39680407,0.00462157,-0.0039183,0.50203811,114.94145,79.306255)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5376">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop5378" />
+      <stop
+         style="stop-color:#434542;stop-opacity:1"
+         offset="1"
+         id="stop5380" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3617"
+       id="linearGradient3623"
+       x1="1.421198"
+       y1="19.01931"
+       x2="1.421198"
+       y2="34.927505"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0323022,0,0,0.62872826,-5.0367759,-2.8264081)" />
+    <linearGradient
+       id="linearGradient5853-9"
+       inkscape:collect="always">
+      <stop
+         id="stop5855-9"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         id="stop5857-6"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5655-9-5"
+       id="linearGradient2892-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.77127394,0,0,0.69309231,220.91736,97.227704)"
+       x1="-300.82822"
+       y1="-126.31032"
+       x2="-300.82822"
+       y2="-114.83224" />
+    <linearGradient
+       id="linearGradient5655-9-5"
+       inkscape:collect="always">
+      <stop
+         id="stop5657-5-8"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1" />
+      <stop
+         id="stop5659-1-7"
+         offset="1"
+         style="stop-color:#707e83;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3617-3"
+       id="linearGradient2894-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.77739212,0,0,0.56621027,-10.810779,-1.5472934)"
+       x1="1.421198"
+       y1="19.01931"
+       x2="1.421198"
+       y2="34.927505" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3617-3">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3619-4" />
+      <stop
+         style="stop-color:#0b0c0d;stop-opacity:1"
+         offset="1"
+         id="stop3621-6" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043-9-6-1-1"
+       id="radialGradient2896-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.48374104,0.92161718,1.0869289,0.53973041,-4.6726884,359.09453)"
+       cx="-306.03387"
+       cy="-120.8595"
+       fx="-306.03387"
+       fy="-120.8595"
+       r="3.03685" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5043-9-6-1-1">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5045-4-8-8-6" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5047-1-2-6-8" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5677-7-2"
+       id="linearGradient2898-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.74926868,0,0,0.67528296,-215.80931,95.061921)"
+       x1="305.89481"
+       y1="-120.46718"
+       x2="306.04715"
+       y2="-120.46718" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5677-7-2">
+      <stop
+         style="stop-color:#ff2de7;stop-opacity:1"
+         offset="0"
+         id="stop5679-1-6" />
+      <stop
+         style="stop-color:#7b009b;stop-opacity:1"
+         offset="1"
+         id="stop5681-4-3" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4555-8"
+       id="linearGradient2900-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69961638,0,0,0.83812243,167.85054,51.827596)"
+       x1="-257.51324"
+       y1="-50.301723"
+       x2="-257.49792"
+       y2="-51.439991" />
+    <linearGradient
+       id="linearGradient4555-8"
+       inkscape:collect="always">
+      <stop
+         id="stop4557-5"
+         offset="0"
+         style="stop-color:#545652;stop-opacity:1;" />
+      <stop
+         id="stop4559-4"
+         offset="1"
+         style="stop-color:#80837d;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       y2="-36.569096"
+       x2="-219.25159"
+       y1="-43.842201"
+       x1="-219.25159"
+       gradientTransform="matrix(0.736656,0,0,0.58794323,172.57296,38.700092)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2944"
+       xlink:href="#linearGradient5853-9"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4555-8"
+       id="linearGradient3017"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99999661,0,0,0.84879369,263.57748,52.023106)"
+       x1="-257.51324"
+       y1="-50.301723"
+       x2="-257.49792"
+       y2="-51.439991" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5853"
+       id="linearGradient3052"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.78353222,0,0,0.63823472,182.7448,41.268763)"
+       x1="-219.25159"
+       y1="-43.842201"
+       x2="-219.25159"
+       y2="-36.569096" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5655-9"
+       id="linearGradient3054"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.52563657,0,0,0.74896722,147.28005,104.29678)"
+       x1="-300.82822"
+       y1="-126.31032"
+       x2="-300.82822"
+       y2="-114.83224" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3617"
+       id="linearGradient3056"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0323022,0,0,0.62872826,-10.883035,-2.7880825)"
+       x1="1.421198"
+       y1="19.01931"
+       x2="1.421198"
+       y2="34.927505" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043-9-6-1"
+       id="radialGradient3058"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.48374104,0.92161718,1.0869289,0.53973041,-4.6685612,359.13287)"
+       cx="-306.03387"
+       cy="-120.8595"
+       fx="-306.03387"
+       fy="-120.8595"
+       r="3.03685" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5677-7"
+       id="linearGradient3060"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038316,0,0,0.67291737,-293.75765,95.247398)"
+       x1="305.89481"
+       y1="-120.46718"
+       x2="306.04715"
+       y2="-120.46718" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4555-8"
+       id="linearGradient3062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.97519982,0,0,0.84415901,263.06047,51.763511)"
+       x1="-257.51324"
+       y1="-50.301723"
+       x2="-257.49792"
+       y2="-51.439991" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="11.202323"
+     inkscape:cy="4.1597985"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:window-width="1280"
+     inkscape:window-height="752"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2855"
+       empspacing="5"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3884">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     transform="translate(8.5714283,-0.14285715)">
+    <rect
+       style="fill:#cc0000;fill-opacity:0;stroke:none"
+       id="rect5861"
+       width="24.790443"
+       height="24.790268"
+       x="-9.2806616"
+       y="-0.527372"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
+    <path
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       d="m -0.48273876,1.0629519 c -3.52465864,0 -6.05863694,2.8300983 -6.05863694,6.3428228 l 0,3.3085963 c 0,0.37141 0.035895,0.72774 0.097163,1.081347 l 0.9991275,0 c -0.065659,-0.350767 -0.097169,-0.710737 -0.097169,-1.081347 l 0,-3.3085963 c 0,-3.2355382 2.6134218,-5.8263589 5.85995222,-5.8263589 l 5.78571128,0 c 3.2465298,0 5.3244047,2.5908207 5.3244047,5.8263589 l 0,3.3085963 c 0,0.37061 -0.03151,0.73058 -0.09716,1.081347 l 1.009535,0 c 0.06128,-0.353607 0.09717,-0.709937 0.09717,-1.081347 l 0,-3.3085963 c 0,-3.5127245 -2.5943893,-6.3428228 -6.1190468,-6.3428228 l -6.80105096,0 z"
+       id="rect5549"
+       sodipodi:nodetypes="ccccccccccccccccc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="fill:url(#radialGradient5382);fill-opacity:1;stroke:none"
+       d="M -6.1124165,5.0092681 C -6.2937011,4.857301 -6.3656082,4.6552646 -6.3508656,4.3393305 c 0.015145,-0.3246281 0.074427,-0.4224572 0.5782217,-0.9542902 2.4612924,-2.59830661 7.0821101,-3.80012252 11.4352585,-2.9741749 1.9884343,0.37728499 3.8595526,1.2045329 5.1621134,2.2822431 0.700934,0.5799423 1.227547,1.2049406 1.287114,1.5275892 0.08117,0.4396387 -0.165477,0.8816512 -0.492195,0.8820587 C 11.511915,5.1028987 11.414663,5.0482236 11.192716,4.8627671 8.7626236,2.8321186 4.9304322,2.0520483 1.1786312,2.4838271 -1.3654872,2.7766089 -3.5952197,3.4219776 -5.3219525,4.7999737 -5.7481258,5.1400754 -5.9063913,5.1819745 -6.1124165,5.0092681 l 0,0 z"
+       id="path5202"
+       sodipodi:nodetypes="cssssssssscc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:url(#linearGradient5394);fill-opacity:1;stroke:none;stroke-width:1.36950052;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       d="M 2.2314285,0.15982254 C 1.5681819,0.18486471 0.90718512,0.24568013 0.26747679,0.33930091 -2.2757235,0.71150594 -4.5645706,1.6180373 -6.0369733,2.9956022 c -0.00903,0.00844 -0.024029,0.00944 -0.033007,0.017935 -0.012792,0.016513 -0.023888,0.034598 -0.033008,0.053804 -0.4403793,0.3375798 -0.5877622,0.9911622 -0.3135721,1.5076317 0.2695585,0.5077469 0.8359264,0.8666088 1.3203037,0.6391068 0.00871,-0.00389 0.024399,0.00444 0.033008,0 0.023394,-0.00852 0.045687,-0.020622 0.066015,-0.035869 0.00423,-0.00222 0.012306,0.00278 0.016478,0 0.00998,-0.00699 0.022974,-0.010993 0.033007,-0.017935 0.00618,-0.00389 0.010301,-0.013659 0.016478,-0.017935 3.3537088,-2.3260348 9.7006937,-2.6339833 14.0447311,-0.7955125 0.6082274,0.2574074 1.1553506,0.4018799 1.6338756,0.7237182 0.0052,0.00623 0.01073,0.012223 0.01649,0.017935 0.0063,0.00389 0.01023,0.013659 0.01649,0.017935 0.01419,0.020208 0.0309,0.038354 0.04948,0.053804 0.502483,0.3154924 1.162228,-0.038811 1.452335,-0.5852639 0.247807,-0.4667638 0.146702,-1.0421673 -0.198045,-1.399947 -0.0047,-0.012372 -0.01023,-0.024385 -0.01649,-0.035924 -0.0032,-0.00278 -0.01325,0.00278 -0.01648,0 -0.0052,-0.00623 -0.01075,-0.012222 -0.01649,-0.017935 -0.01451,-0.013159 -0.01774,-0.041477 -0.03301,-0.053804 1.69e-4,-0.00598 1.69e-4,-0.011958 0,-0.017935 C 11.063525,2.1438018 9.7288832,1.420058 8.123231,0.9136051 6.881406,0.52191092 5.5618524,0.2860859 4.2283351,0.19568594 3.5615763,0.15048887 2.8946224,0.13475869 2.2313757,0.15981702 l 5.28e-5,5.52e-6 z M 3.2216546,1.118851 C 4.8434103,1.1445592 6.47508,1.381683 7.9747488,1.8547154 l 0.016477,0 c 1.4589832,0.4622162 2.6653182,0.7504142 3.5153102,1.5177947 0.02512,0.053659 0.06618,0.098318 0.115525,0.1256361 0.255306,0.1602946 0.345445,0.5120662 0.198047,0.7897126 -0.125292,0.2360026 -0.381595,0.5148033 -0.610642,0.4416827 -0.02417,-0.023244 -0.05231,-0.041582 -0.08252,-0.053803 C 10.586764,4.2971254 9.9816422,3.6699592 9.2950271,3.3793701 7.0201121,2.4165922 4.2797424,2.0800172 1.6537692,2.2613612 -0.92727635,2.439607 -3.385666,3.4217546 -5.1622985,4.6398355 c -0.00423,0.00278 -0.012516,-0.00278 -0.016478,0 -0.011369,0.00513 -0.022407,0.011131 -0.033007,0.017935 -0.011368,0.00513 -0.022407,0.011131 -0.033008,0.017935 -0.00629,0.00444 -0.010248,0.013549 -0.016478,0.017935 -0.2519456,0.1440146 -0.5659508,-0.1350971 -0.709663,-0.4057859 -0.1414944,-0.2665301 -0.066845,-0.6038212 0.165038,-0.7717671 0.011365,-0.00513 0.022402,-0.011131 0.033007,-0.017935 0.039117,-0.020455 0.073468,-0.051585 0.099022,-0.089739 C -4.3207441,2.1583496 -2.1238168,1.6579803 0.33351644,1.2983351 1.2668605,1.1617328 2.2486277,1.1033985 3.2216811,1.1188565 l -2.65e-5,-5.5e-6 z"
+       id="path5194"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963"
+       sodipodi:nodetypes="csssssssssssssssssssssscssccccccsssssssssssssscscc" />
+    <path
+       sodipodi:type="arc"
+       style="fill:none;stroke:url(#linearGradient5212);stroke-width:1.91763961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       id="path5204"
+       sodipodi:cx="-285.49203"
+       sodipodi:cy="-135.7495"
+       sodipodi:rx="18.775068"
+       sodipodi:ry="9.3875341"
+       d="m -300.83968,-141.15673 a 18.775068,9.3875341 0 0 1 30.74554,0.0358"
+       transform="matrix(-0.53178943,0,0,0.51135941,-148.92763,75.903492)"
+       sodipodi:start="3.7554218"
+       sodipodi:end="5.6740176"
+       sodipodi:open="true"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       d="m -6.5611649,17.801468 0,0.01611 c 0,3.512724 2.8301183,6.342822 6.34286708,6.342822 L 4.5590266,23.541443 4.7566141,22.863449 0.3433825,23.189216 c -3.2355607,0 -5.8263995,-2.470095 -5.8263995,-5.705633 l 0,-0.01611 -1.0781479,0.333995 z"
+       id="rect5551"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       ry="1.0211699"
+       rx="1.0211699"
+       y="-0.10164929"
+       x="21.63047"
+       height="5.0177956"
+       width="2.0423398"
+       id="rect4784"
+       style="fill:#555753;fill-opacity:1;stroke:url(#linearGradient4792);stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       transform="matrix(0,1,1,0,0,0)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       sodipodi:type="inkscape:offset"
+       inkscape:radius="-1.0081301"
+       inkscape:original="M -103.46875 -287.5 C -104.58751 -287.5 -105.5 -286.58751 -105.5 -285.46875 L -105.5 -279.53125 C -105.5 -278.41249 -104.58751 -277.5 -103.46875 -277.5 L -102.53125 -277.5 C -101.41249 -277.5 -100.5 -278.41249 -100.5 -279.53125 L -100.5 -285.46875 C -100.5 -286.58751 -101.41249 -287.5 -102.53125 -287.5 L -103.46875 -287.5 z "
+       style="opacity:0.6081081;fill:none;stroke:url(#linearGradient4977);stroke-width:3.76500607;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       id="path4967"
+       d="m -103.46875,-286.5 c -0.57059,0 -1.03125,0.46066 -1.03125,1.03125 l 0,5.9375 c 0,0.57059 0.46066,1.03125 1.03125,1.03125 l 0.9375,0 c 0.57059,0 1.03125,-0.46066 1.03125,-1.03125 l 0,-5.9375 c 0,-0.57059 -0.46066,-1.03125 -1.03125,-1.03125 l -0.9375,0 z"
+       transform="matrix(0,0.1801693,0.39155051,0,113.06595,41.440494)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       transform="matrix(0,1,1,0,0,0)"
+       style="fill:url(#linearGradient5632);fill-opacity:1;stroke:none"
+       id="rect5572"
+       width="1.0458575"
+       height="3.8989625"
+       x="22.13949"
+       y="0.49657452"
+       rx="0.99727494"
+       ry="0.99727511"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient5758);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       d="m -5.3765984,9.6362166 c -1.49077,0 -2.6907551,1.0642814 -2.6907551,2.3864794 l 0,4.192469 c 0,1.322192 1.1999851,2.38648 2.6907551,2.38648 l 1.2651311,0.0013 0.015891,-8.9736896 c -0.9561106,0.024323 -0.3962926,0.00686 -1.2810216,0.00686 l 0,-5.62e-5 1e-7,6.63e-5 z"
+       id="path5707"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient5719-5);fill-opacity:1;stroke:none"
+       id="rect5709"
+       width="0.98004872"
+       height="8.9388952"
+       x="-5.5517335"
+       y="9.1426477"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient3623);fill-opacity:1;stroke:none"
+       id="rect5711"
+       width="2.0254388"
+       height="10.001933"
+       x="-4.5823889"
+       y="9.1315699"
+       rx="1.0133103"
+       ry="1.0133103"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       sodipodi:nodetypes="cccccccc"
+       id="path5713"
+       d="m -5.8661826,9.9499715 c -0.9407715,0 -1.698042,0.8558425 -1.698042,1.9190855 l 0,3.371356 c 0,1.063237 0.7572705,1.919079 1.698042,1.919079 l 1.2401832,-0.01722 0,-7.19223 c -0.6033633,0.019548 -0.6818611,0 -1.2401832,0 l 0,-7.25e-5 z"
+       style="opacity:0.5;fill:url(#radialGradient5721-4);fill-opacity:1;stroke:none"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient5723-8);fill-opacity:1;stroke:none"
+       id="rect5715"
+       width="2.0024893"
+       height="5.9961619"
+       x="6.5585375"
+       y="11.146509"
+       rx="0.99742299"
+       ry="0.99742311"
+       transform="scale(-1,1)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#dee1e3;fill-opacity:1;stroke:none"
+       id="path5859"
+       sodipodi:cx="-244.01906"
+       sodipodi:cy="-24.045986"
+       sodipodi:rx="0.83739835"
+       sodipodi:ry="1.3739837"
+       d="m -243.18166,-24.045986 a 0.83739835,1.3739837 0 1 1 -1.6748,0 0.83739835,1.3739837 0 1 1 1.6748,0 z"
+       transform="matrix(0.62336294,0,0,0.3800951,153.07483,31.796377)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient4984);fill-opacity:1;stroke:none"
+       id="rect5811-4"
+       width="1.042106"
+       height="2.3800838"
+       x="23.119368"
+       y="-1.4279883"
+       rx="0.50398123"
+       ry="0.50398123"
+       transform="matrix(0,1,-1,0,0,0)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       y="-0.527372"
+       x="-9.2806616"
+       height="24.790268"
+       width="24.790443"
+       id="rect5863"
+       style="fill:#ffffff;fill-opacity:0;stroke:none"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:url(#linearGradient3017);fill-opacity:1;stroke:none"
+       id="rect3015"
+       width="1.0079591"
+       height="3.0484221"
+       x="5.5438328"
+       y="8.1219101"
+       rx="0.50398123"
+       ry="0.50398123"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       sodipodi:nodetypes="ccccccccc"
+       id="path3040"
+       d="m 11.222858,9.6745422 c 1.49077,0 2.690755,1.0642818 2.690755,2.3864798 l 0,4.192469 c 0,1.322192 -1.199985,2.38648 -2.690755,2.38648 l -1.2651315,0.0013 -0.015891,-8.97369 c 0.9561105,0.024323 0.3962925,0.00686 1.2810215,0.00686 l 0,-5.62e-5 0,6.63e-5 z"
+       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient3052);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220" />
+    <rect
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       y="9.1809731"
+       x="-11.397993"
+       height="8.9388952"
+       width="0.98004872"
+       id="rect3042"
+       style="fill:url(#linearGradient3054);fill-opacity:1;stroke:none"
+       transform="scale(-1,1)" />
+    <rect
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       ry="1.0133103"
+       rx="1.0133103"
+       y="9.1698952"
+       x="-10.428648"
+       height="10.001933"
+       width="2.0254388"
+       id="rect3044"
+       style="fill:url(#linearGradient3056);fill-opacity:1;stroke:none"
+       transform="scale(-1,1)" />
+    <path
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       style="opacity:0.5;fill:url(#radialGradient3058);fill-opacity:1;stroke:none"
+       d="m 11.712442,9.9882971 c 0.940771,0 1.698042,0.8558429 1.698042,1.9190859 l 0,3.371356 c 0,1.063237 -0.757271,1.919079 -1.698042,1.919079 l -1.240183,-0.01722 0,-7.1922304 c 0.603363,0.019548 0.681861,0 1.240183,0 l 0,-7.25e-5 z"
+       id="path3046"
+       sodipodi:nodetypes="cccccccc" />
+    <rect
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       ry="0.99742311"
+       rx="0.99742299"
+       y="11.184834"
+       x="12.404797"
+       height="5.9961619"
+       width="2.0024893"
+       id="rect3048"
+       style="fill:url(#linearGradient3060);fill-opacity:1;stroke:none" />
+    <rect
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       ry="0.50398123"
+       rx="0.50398123"
+       y="8.1020288"
+       x="11.425255"
+       height="3.0317767"
+       width="0.98296487"
+       id="rect3050"
+       style="fill:url(#linearGradient3062);fill-opacity:1;stroke:none" />
+  </g>
+</svg>
--- a/pidgin/pixmaps/toolbar/22/scalable/voice-call.svg	Wed Aug 19 16:19:45 2009 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,795 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="24"
-   height="24"
-   id="svg3879"
-   sodipodi:version="0.32"
-   inkscape:version="0.46+devel r20974"
-   version="1.0"
-   sodipodi:docname="voice-24.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs3881">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3617">
-      <stop
-         style="stop-color:#2e3436;stop-opacity:1;"
-         offset="0"
-         id="stop3619" />
-      <stop
-         style="stop-color:#0b0c0d;stop-opacity:1"
-         offset="1"
-         id="stop3621" />
-    </linearGradient>
-    <linearGradient
-       gradientTransform="matrix(1.0338738,0,0,1.022703,49.113708,-252.03388)"
-       inkscape:collect="always"
-       xlink:href="#linearGradient4976"
-       id="linearGradient4984"
-       x1="-24.687374"
-       y1="245.84587"
-       x2="-24.687374"
-       y2="247.61009"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4976">
-      <stop
-         style="stop-color:#555753;stop-opacity:1;"
-         offset="0"
-         id="stop4978" />
-      <stop
-         style="stop-color:#808080;stop-opacity:1"
-         offset="1"
-         id="stop4980" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5677-7"
-       id="linearGradient5723-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0038316,0,0,0.67291737,-299.60391,95.209072)"
-       x1="305.89481"
-       y1="-120.46718"
-       x2="306.04715"
-       y2="-120.46718" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5677-7">
-      <stop
-         style="stop-color:#ff2de7;stop-opacity:1"
-         offset="0"
-         id="stop5679-1" />
-      <stop
-         style="stop-color:#7b009b;stop-opacity:1"
-         offset="1"
-         id="stop5681-4" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5043-9-6-1"
-       id="radialGradient5721-4"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.48374104,0.92161718,-1.0869289,0.53973041,10.51482,359.09454)"
-       cx="-306.03387"
-       cy="-120.8595"
-       fx="-306.03387"
-       fy="-120.8595"
-       r="3.03685" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5043-9-6-1">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop5045-4-8-8" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop5047-1-2-6" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5655-9"
-       id="linearGradient5719-5"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.52563657,0,0,0.74896722,153.12631,104.25845)"
-       x1="-300.82822"
-       y1="-126.31032"
-       x2="-300.82822"
-       y2="-114.83224" />
-    <linearGradient
-       id="linearGradient5655-9"
-       inkscape:collect="always">
-      <stop
-         id="stop5657-5"
-         offset="0"
-         style="stop-color:#2e3436;stop-opacity:1" />
-      <stop
-         id="stop5659-1"
-         offset="1"
-         style="stop-color:#707e83;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       y2="-36.569096"
-       x2="-219.25159"
-       y1="-43.842201"
-       x1="-219.25159"
-       gradientTransform="matrix(-0.78353222,0,0,0.63823472,-176.89854,41.230437)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient5758"
-       xlink:href="#linearGradient5853"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient5853"
-       inkscape:collect="always">
-      <stop
-         id="stop5855"
-         offset="0"
-         style="stop-color:#888a85;stop-opacity:1" />
-      <stop
-         id="stop5857"
-         offset="1"
-         style="stop-color:#555753;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5626"
-       id="linearGradient5632"
-       x1="-25.743168"
-       y1="-243.09763"
-       x2="-23.90864"
-       y2="-240.62437"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.34459514,0,0,0.65761929,31.073819,161.60062)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5626">
-      <stop
-         style="stop-color:#babdb6;stop-opacity:1;"
-         offset="0"
-         id="stop5628" />
-      <stop
-         style="stop-color:#babdb6;stop-opacity:0;"
-         offset="1"
-         id="stop5630" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4971"
-       id="linearGradient4977"
-       x1="-105.74262"
-       y1="-282.20282"
-       x2="-102.94624"
-       y2="-282.20282"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4971">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop4973" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop4975" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4786"
-       id="linearGradient4792"
-       x1="-106.91152"
-       y1="280.91522"
-       x2="-101.28181"
-       y2="282.32028"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.40915917,0,0,0.50230701,64.794864,-139.49239)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4786">
-      <stop
-         style="stop-color:#555753;stop-opacity:1"
-         offset="0"
-         id="stop4788" />
-      <stop
-         style="stop-color:#000000;stop-opacity:1"
-         offset="1"
-         id="stop4790" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5206"
-       id="linearGradient5212"
-       x1="-304.49771"
-       y1="-142.89493"
-       x2="-262.4259"
-       y2="-143.92334"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5206">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0"
-         id="stop5208" />
-      <stop
-         style="stop-color:#dededd;stop-opacity:0;"
-         offset="1"
-         id="stop5210" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient5394"
-       x1="-283.80222"
-       y1="-143.74782"
-       x2="-283.80222"
-       y2="-141.12897"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.52812148,0,0,0.55524807,152.92759,81.21193)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5388">
-      <stop
-         style="stop-color:#555753;stop-opacity:1"
-         offset="0"
-         id="stop5390" />
-      <stop
-         style="stop-color:#000000;stop-opacity:1"
-         offset="1"
-         id="stop5392" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5376"
-       id="radialGradient5382"
-       cx="-284.44626"
-       cy="-153.18155"
-       fx="-284.44626"
-       fy="-153.18155"
-       r="17.449057"
-       gradientTransform="matrix(0.39680407,0.00462157,-0.0039183,0.50203811,114.94145,79.306255)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5376">
-      <stop
-         style="stop-color:#babdb6;stop-opacity:1"
-         offset="0"
-         id="stop5378" />
-      <stop
-         style="stop-color:#434542;stop-opacity:1"
-         offset="1"
-         id="stop5380" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3617"
-       id="linearGradient3623"
-       x1="1.421198"
-       y1="19.01931"
-       x2="1.421198"
-       y2="34.927505"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0323022,0,0,0.62872826,-5.0367759,-2.8264081)" />
-    <linearGradient
-       id="linearGradient5853-9"
-       inkscape:collect="always">
-      <stop
-         id="stop5855-9"
-         offset="0"
-         style="stop-color:#888a85;stop-opacity:1" />
-      <stop
-         id="stop5857-6"
-         offset="1"
-         style="stop-color:#555753;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5655-9-5"
-       id="linearGradient2892-5"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.77127394,0,0,0.69309231,220.91736,97.227704)"
-       x1="-300.82822"
-       y1="-126.31032"
-       x2="-300.82822"
-       y2="-114.83224" />
-    <linearGradient
-       id="linearGradient5655-9-5"
-       inkscape:collect="always">
-      <stop
-         id="stop5657-5-8"
-         offset="0"
-         style="stop-color:#2e3436;stop-opacity:1" />
-      <stop
-         id="stop5659-1-7"
-         offset="1"
-         style="stop-color:#707e83;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3617-3"
-       id="linearGradient2894-1"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.77739212,0,0,0.56621027,-10.810779,-1.5472934)"
-       x1="1.421198"
-       y1="19.01931"
-       x2="1.421198"
-       y2="34.927505" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3617-3">
-      <stop
-         style="stop-color:#2e3436;stop-opacity:1;"
-         offset="0"
-         id="stop3619-4" />
-      <stop
-         style="stop-color:#0b0c0d;stop-opacity:1"
-         offset="1"
-         id="stop3621-6" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5043-9-6-1-1"
-       id="radialGradient2896-0"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.48374104,0.92161718,1.0869289,0.53973041,-4.6726884,359.09453)"
-       cx="-306.03387"
-       cy="-120.8595"
-       fx="-306.03387"
-       fy="-120.8595"
-       r="3.03685" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5043-9-6-1-1">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop5045-4-8-8-6" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop5047-1-2-6-8" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5677-7-2"
-       id="linearGradient2898-1"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.74926868,0,0,0.67528296,-215.80931,95.061921)"
-       x1="305.89481"
-       y1="-120.46718"
-       x2="306.04715"
-       y2="-120.46718" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5677-7-2">
-      <stop
-         style="stop-color:#ff2de7;stop-opacity:1"
-         offset="0"
-         id="stop5679-1-6" />
-      <stop
-         style="stop-color:#7b009b;stop-opacity:1"
-         offset="1"
-         id="stop5681-4-3" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4555-8"
-       id="linearGradient2900-3"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.69961638,0,0,0.83812243,167.85054,51.827596)"
-       x1="-257.51324"
-       y1="-50.301723"
-       x2="-257.49792"
-       y2="-51.439991" />
-    <linearGradient
-       id="linearGradient4555-8"
-       inkscape:collect="always">
-      <stop
-         id="stop4557-5"
-         offset="0"
-         style="stop-color:#545652;stop-opacity:1;" />
-      <stop
-         id="stop4559-4"
-         offset="1"
-         style="stop-color:#80837d;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       y2="-36.569096"
-       x2="-219.25159"
-       y1="-43.842201"
-       x1="-219.25159"
-       gradientTransform="matrix(0.736656,0,0,0.58794323,172.57296,38.700092)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient2944"
-       xlink:href="#linearGradient5853-9"
-       inkscape:collect="always" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4555-8"
-       id="linearGradient3017"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.99999661,0,0,0.84879369,263.57748,52.023106)"
-       x1="-257.51324"
-       y1="-50.301723"
-       x2="-257.49792"
-       y2="-51.439991" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5853"
-       id="linearGradient3052"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.78353222,0,0,0.63823472,182.7448,41.268763)"
-       x1="-219.25159"
-       y1="-43.842201"
-       x2="-219.25159"
-       y2="-36.569096" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5655-9"
-       id="linearGradient3054"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.52563657,0,0,0.74896722,147.28005,104.29678)"
-       x1="-300.82822"
-       y1="-126.31032"
-       x2="-300.82822"
-       y2="-114.83224" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3617"
-       id="linearGradient3056"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0323022,0,0,0.62872826,-10.883035,-2.7880825)"
-       x1="1.421198"
-       y1="19.01931"
-       x2="1.421198"
-       y2="34.927505" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5043-9-6-1"
-       id="radialGradient3058"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.48374104,0.92161718,1.0869289,0.53973041,-4.6685612,359.13287)"
-       cx="-306.03387"
-       cy="-120.8595"
-       fx="-306.03387"
-       fy="-120.8595"
-       r="3.03685" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5677-7"
-       id="linearGradient3060"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0038316,0,0,0.67291737,-293.75765,95.247398)"
-       x1="305.89481"
-       y1="-120.46718"
-       x2="306.04715"
-       y2="-120.46718" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4555-8"
-       id="linearGradient3062"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97519982,0,0,0.84415901,263.06047,51.763511)"
-       x1="-257.51324"
-       y1="-50.301723"
-       x2="-257.49792"
-       y2="-51.439991" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="45.254834"
-     inkscape:cx="11.202323"
-     inkscape:cy="4.1597985"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1280"
-     inkscape:window-height="752"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2855"
-       empspacing="5"
-       visible="true"
-       enabled="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata3884">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     transform="translate(8.5714283,-0.14285715)">
-    <rect
-       style="fill:#cc0000;fill-opacity:0;stroke:none"
-       id="rect5861"
-       width="24.790443"
-       height="24.790268"
-       x="-9.2806616"
-       y="-0.527372"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
-    <path
-       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
-       d="m -0.48273876,1.0629519 c -3.52465864,0 -6.05863694,2.8300983 -6.05863694,6.3428228 l 0,3.3085963 c 0,0.37141 0.035895,0.72774 0.097163,1.081347 l 0.9991275,0 c -0.065659,-0.350767 -0.097169,-0.710737 -0.097169,-1.081347 l 0,-3.3085963 c 0,-3.2355382 2.6134218,-5.8263589 5.85995222,-5.8263589 l 5.78571128,0 c 3.2465298,0 5.3244047,2.5908207 5.3244047,5.8263589 l 0,3.3085963 c 0,0.37061 -0.03151,0.73058 -0.09716,1.081347 l 1.009535,0 c 0.06128,-0.353607 0.09717,-0.709937 0.09717,-1.081347 l 0,-3.3085963 c 0,-3.5127245 -2.5943893,-6.3428228 -6.1190468,-6.3428228 l -6.80105096,0 z"
-       id="rect5549"
-       sodipodi:nodetypes="ccccccccccccccccc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="fill:url(#radialGradient5382);fill-opacity:1;stroke:none"
-       d="M -6.1124165,5.0092681 C -6.2937011,4.857301 -6.3656082,4.6552646 -6.3508656,4.3393305 c 0.015145,-0.3246281 0.074427,-0.4224572 0.5782217,-0.9542902 2.4612924,-2.59830661 7.0821101,-3.80012252 11.4352585,-2.9741749 1.9884343,0.37728499 3.8595526,1.2045329 5.1621134,2.2822431 0.700934,0.5799423 1.227547,1.2049406 1.287114,1.5275892 0.08117,0.4396387 -0.165477,0.8816512 -0.492195,0.8820587 C 11.511915,5.1028987 11.414663,5.0482236 11.192716,4.8627671 8.7626236,2.8321186 4.9304322,2.0520483 1.1786312,2.4838271 -1.3654872,2.7766089 -3.5952197,3.4219776 -5.3219525,4.7999737 -5.7481258,5.1400754 -5.9063913,5.1819745 -6.1124165,5.0092681 l 0,0 z"
-       id="path5202"
-       sodipodi:nodetypes="cssssssssscc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:url(#linearGradient5394);fill-opacity:1;stroke:none;stroke-width:1.36950052;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
-       d="M 2.2314285,0.15982254 C 1.5681819,0.18486471 0.90718512,0.24568013 0.26747679,0.33930091 -2.2757235,0.71150594 -4.5645706,1.6180373 -6.0369733,2.9956022 c -0.00903,0.00844 -0.024029,0.00944 -0.033007,0.017935 -0.012792,0.016513 -0.023888,0.034598 -0.033008,0.053804 -0.4403793,0.3375798 -0.5877622,0.9911622 -0.3135721,1.5076317 0.2695585,0.5077469 0.8359264,0.8666088 1.3203037,0.6391068 0.00871,-0.00389 0.024399,0.00444 0.033008,0 0.023394,-0.00852 0.045687,-0.020622 0.066015,-0.035869 0.00423,-0.00222 0.012306,0.00278 0.016478,0 0.00998,-0.00699 0.022974,-0.010993 0.033007,-0.017935 0.00618,-0.00389 0.010301,-0.013659 0.016478,-0.017935 3.3537088,-2.3260348 9.7006937,-2.6339833 14.0447311,-0.7955125 0.6082274,0.2574074 1.1553506,0.4018799 1.6338756,0.7237182 0.0052,0.00623 0.01073,0.012223 0.01649,0.017935 0.0063,0.00389 0.01023,0.013659 0.01649,0.017935 0.01419,0.020208 0.0309,0.038354 0.04948,0.053804 0.502483,0.3154924 1.162228,-0.038811 1.452335,-0.5852639 0.247807,-0.4667638 0.146702,-1.0421673 -0.198045,-1.399947 -0.0047,-0.012372 -0.01023,-0.024385 -0.01649,-0.035924 -0.0032,-0.00278 -0.01325,0.00278 -0.01648,0 -0.0052,-0.00623 -0.01075,-0.012222 -0.01649,-0.017935 -0.01451,-0.013159 -0.01774,-0.041477 -0.03301,-0.053804 1.69e-4,-0.00598 1.69e-4,-0.011958 0,-0.017935 C 11.063525,2.1438018 9.7288832,1.420058 8.123231,0.9136051 6.881406,0.52191092 5.5618524,0.2860859 4.2283351,0.19568594 3.5615763,0.15048887 2.8946224,0.13475869 2.2313757,0.15981702 l 5.28e-5,5.52e-6 z M 3.2216546,1.118851 C 4.8434103,1.1445592 6.47508,1.381683 7.9747488,1.8547154 l 0.016477,0 c 1.4589832,0.4622162 2.6653182,0.7504142 3.5153102,1.5177947 0.02512,0.053659 0.06618,0.098318 0.115525,0.1256361 0.255306,0.1602946 0.345445,0.5120662 0.198047,0.7897126 -0.125292,0.2360026 -0.381595,0.5148033 -0.610642,0.4416827 -0.02417,-0.023244 -0.05231,-0.041582 -0.08252,-0.053803 C 10.586764,4.2971254 9.9816422,3.6699592 9.2950271,3.3793701 7.0201121,2.4165922 4.2797424,2.0800172 1.6537692,2.2613612 -0.92727635,2.439607 -3.385666,3.4217546 -5.1622985,4.6398355 c -0.00423,0.00278 -0.012516,-0.00278 -0.016478,0 -0.011369,0.00513 -0.022407,0.011131 -0.033007,0.017935 -0.011368,0.00513 -0.022407,0.011131 -0.033008,0.017935 -0.00629,0.00444 -0.010248,0.013549 -0.016478,0.017935 -0.2519456,0.1440146 -0.5659508,-0.1350971 -0.709663,-0.4057859 -0.1414944,-0.2665301 -0.066845,-0.6038212 0.165038,-0.7717671 0.011365,-0.00513 0.022402,-0.011131 0.033007,-0.017935 0.039117,-0.020455 0.073468,-0.051585 0.099022,-0.089739 C -4.3207441,2.1583496 -2.1238168,1.6579803 0.33351644,1.2983351 1.2668605,1.1617328 2.2486277,1.1033985 3.2216811,1.1188565 l -2.65e-5,-5.5e-6 z"
-       id="path5194"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963"
-       sodipodi:nodetypes="csssssssssssssssssssssscssccccccsssssssssssssscscc" />
-    <path
-       sodipodi:type="arc"
-       style="fill:none;stroke:url(#linearGradient5212);stroke-width:1.91763961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       id="path5204"
-       sodipodi:cx="-285.49203"
-       sodipodi:cy="-135.7495"
-       sodipodi:rx="18.775068"
-       sodipodi:ry="9.3875341"
-       d="m -300.83968,-141.15673 a 18.775068,9.3875341 0 0 1 30.74554,0.0358"
-       transform="matrix(-0.53178943,0,0,0.51135941,-148.92763,75.903492)"
-       sodipodi:start="3.7554218"
-       sodipodi:end="5.6740176"
-       sodipodi:open="true"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
-       d="m -6.5611649,17.801468 0,0.01611 c 0,3.512724 2.8301183,6.342822 6.34286708,6.342822 L 4.5590266,23.541443 4.7566141,22.863449 0.3433825,23.189216 c -3.2355607,0 -5.8263995,-2.470095 -5.8263995,-5.705633 l 0,-0.01611 -1.0781479,0.333995 z"
-       id="rect5551"
-       sodipodi:nodetypes="ccccccccc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       ry="1.0211699"
-       rx="1.0211699"
-       y="-0.10164929"
-       x="21.63047"
-       height="5.0177956"
-       width="2.0423398"
-       id="rect4784"
-       style="fill:#555753;fill-opacity:1;stroke:url(#linearGradient4792);stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       transform="matrix(0,1,1,0,0,0)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0081301"
-       inkscape:original="M -103.46875 -287.5 C -104.58751 -287.5 -105.5 -286.58751 -105.5 -285.46875 L -105.5 -279.53125 C -105.5 -278.41249 -104.58751 -277.5 -103.46875 -277.5 L -102.53125 -277.5 C -101.41249 -277.5 -100.5 -278.41249 -100.5 -279.53125 L -100.5 -285.46875 C -100.5 -286.58751 -101.41249 -287.5 -102.53125 -287.5 L -103.46875 -287.5 z "
-       style="opacity:0.6081081;fill:none;stroke:url(#linearGradient4977);stroke-width:3.76500607;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       id="path4967"
-       d="m -103.46875,-286.5 c -0.57059,0 -1.03125,0.46066 -1.03125,1.03125 l 0,5.9375 c 0,0.57059 0.46066,1.03125 1.03125,1.03125 l 0.9375,0 c 0.57059,0 1.03125,-0.46066 1.03125,-1.03125 l 0,-5.9375 c 0,-0.57059 -0.46066,-1.03125 -1.03125,-1.03125 l -0.9375,0 z"
-       transform="matrix(0,0.1801693,0.39155051,0,113.06595,41.440494)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       transform="matrix(0,1,1,0,0,0)"
-       style="fill:url(#linearGradient5632);fill-opacity:1;stroke:none"
-       id="rect5572"
-       width="1.0458575"
-       height="3.8989625"
-       x="22.13949"
-       y="0.49657452"
-       rx="0.99727494"
-       ry="0.99727511"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient5758);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       d="m -5.3765984,9.6362166 c -1.49077,0 -2.6907551,1.0642814 -2.6907551,2.3864794 l 0,4.192469 c 0,1.322192 1.1999851,2.38648 2.6907551,2.38648 l 1.2651311,0.0013 0.015891,-8.9736896 c -0.9561106,0.024323 -0.3962926,0.00686 -1.2810216,0.00686 l 0,-5.62e-5 1e-7,6.63e-5 z"
-       id="path5707"
-       sodipodi:nodetypes="ccccccccc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient5719-5);fill-opacity:1;stroke:none"
-       id="rect5709"
-       width="0.98004872"
-       height="8.9388952"
-       x="-5.5517335"
-       y="9.1426477"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient3623);fill-opacity:1;stroke:none"
-       id="rect5711"
-       width="2.0254388"
-       height="10.001933"
-       x="-4.5823889"
-       y="9.1315699"
-       rx="1.0133103"
-       ry="1.0133103"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       sodipodi:nodetypes="cccccccc"
-       id="path5713"
-       d="m -5.8661826,9.9499715 c -0.9407715,0 -1.698042,0.8558425 -1.698042,1.9190855 l 0,3.371356 c 0,1.063237 0.7572705,1.919079 1.698042,1.919079 l 1.2401832,-0.01722 0,-7.19223 c -0.6033633,0.019548 -0.6818611,0 -1.2401832,0 l 0,-7.25e-5 z"
-       style="opacity:0.5;fill:url(#radialGradient5721-4);fill-opacity:1;stroke:none"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient5723-8);fill-opacity:1;stroke:none"
-       id="rect5715"
-       width="2.0024893"
-       height="5.9961619"
-       x="6.5585375"
-       y="11.146509"
-       rx="0.99742299"
-       ry="0.99742311"
-       transform="scale(-1,1)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       sodipodi:type="arc"
-       style="fill:#dee1e3;fill-opacity:1;stroke:none"
-       id="path5859"
-       sodipodi:cx="-244.01906"
-       sodipodi:cy="-24.045986"
-       sodipodi:rx="0.83739835"
-       sodipodi:ry="1.3739837"
-       d="m -243.18166,-24.045986 a 0.83739835,1.3739837 0 1 1 -1.6748,0 0.83739835,1.3739837 0 1 1 1.6748,0 z"
-       transform="matrix(0.62336294,0,0,0.3800951,153.07483,31.796377)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient4984);fill-opacity:1;stroke:none"
-       id="rect5811-4"
-       width="1.042106"
-       height="2.3800838"
-       x="23.119368"
-       y="-1.4279883"
-       rx="0.50398123"
-       ry="0.50398123"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       y="-0.527372"
-       x="-9.2806616"
-       height="24.790268"
-       width="24.790443"
-       id="rect5863"
-       style="fill:#ffffff;fill-opacity:0;stroke:none"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
-    <rect
-       transform="scale(-1,1)"
-       style="fill:url(#linearGradient3017);fill-opacity:1;stroke:none"
-       id="rect3015"
-       width="1.0079591"
-       height="3.0484221"
-       x="5.5438328"
-       y="8.1219101"
-       rx="0.50398123"
-       ry="0.50398123"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       sodipodi:nodetypes="ccccccccc"
-       id="path3040"
-       d="m 11.222858,9.6745422 c 1.49077,0 2.690755,1.0642818 2.690755,2.3864798 l 0,4.192469 c 0,1.322192 -1.199985,2.38648 -2.690755,2.38648 l -1.2651315,0.0013 -0.015891,-8.97369 c 0.9561105,0.024323 0.3962925,0.00686 1.2810215,0.00686 l 0,-5.62e-5 0,6.63e-5 z"
-       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient3052);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220" />
-    <rect
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       y="9.1809731"
-       x="-11.397993"
-       height="8.9388952"
-       width="0.98004872"
-       id="rect3042"
-       style="fill:url(#linearGradient3054);fill-opacity:1;stroke:none"
-       transform="scale(-1,1)" />
-    <rect
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       ry="1.0133103"
-       rx="1.0133103"
-       y="9.1698952"
-       x="-10.428648"
-       height="10.001933"
-       width="2.0254388"
-       id="rect3044"
-       style="fill:url(#linearGradient3056);fill-opacity:1;stroke:none"
-       transform="scale(-1,1)" />
-    <path
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       style="opacity:0.5;fill:url(#radialGradient3058);fill-opacity:1;stroke:none"
-       d="m 11.712442,9.9882971 c 0.940771,0 1.698042,0.8558429 1.698042,1.9190859 l 0,3.371356 c 0,1.063237 -0.757271,1.919079 -1.698042,1.919079 l -1.240183,-0.01722 0,-7.1922304 c 0.603363,0.019548 0.681861,0 1.240183,0 l 0,-7.25e-5 z"
-       id="path3046"
-       sodipodi:nodetypes="cccccccc" />
-    <rect
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       ry="0.99742311"
-       rx="0.99742299"
-       y="11.184834"
-       x="12.404797"
-       height="5.9961619"
-       width="2.0024893"
-       id="rect3048"
-       style="fill:url(#linearGradient3060);fill-opacity:1;stroke:none" />
-    <rect
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       ry="0.50398123"
-       rx="0.50398123"
-       y="8.1020288"
-       x="11.425255"
-       height="3.0317767"
-       width="0.98296487"
-       id="rect3050"
-       style="fill:url(#linearGradient3062);fill-opacity:1;stroke:none" />
-  </g>
-</svg>
Binary file pidgin/pixmaps/toolbar/22/voice-call.png has changed
Binary file pidgin/pixmaps/toolbar/32/audio-call.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/pixmaps/toolbar/32/scalable/audio-call.svg	Mon Aug 24 17:20:46 2009 +0900
@@ -0,0 +1,990 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg3879"
+   sodipodi:version="0.32"
+   inkscape:version="0.46+devel r20974"
+   version="1.0"
+   sodipodi:docname="voice-32.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3881">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3617">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3619" />
+      <stop
+         style="stop-color:#0b0c0d;stop-opacity:1"
+         offset="1"
+         id="stop3621" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective96" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4555"
+       id="linearGradient4563"
+       gradientUnits="userSpaceOnUse"
+       x1="-257.51324"
+       y1="-50.301723"
+       x2="-257.49792"
+       y2="-51.439991"
+       gradientTransform="matrix(0.66407978,0,0,0.75715849,190.43006,50.728904)" />
+    <linearGradient
+       id="linearGradient4555"
+       inkscape:collect="always">
+      <stop
+         id="stop4557"
+         offset="0"
+         style="stop-color:#545652;stop-opacity:1;" />
+      <stop
+         id="stop4559"
+         offset="1"
+         style="stop-color:#80837d;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1.0450411,0,0,1.0014371,56.421478,-248.82007)"
+       inkscape:collect="always"
+       xlink:href="#linearGradient4976"
+       id="linearGradient4984"
+       x1="-24.687374"
+       y1="245.84587"
+       x2="-24.687374"
+       y2="247.61009"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4976">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4978" />
+      <stop
+         style="stop-color:#808080;stop-opacity:1"
+         offset="1"
+         id="stop4980" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4555"
+       id="linearGradient4553"
+       x1="-257.51324"
+       y1="-50.301723"
+       x2="-257.49792"
+       y2="-51.439991"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.68621958,0,0,0.68621958,170.73384,47.327606)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5677-7"
+       id="linearGradient5723-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99553756,0,0,0.89724059,-297.05952,126.21271)"
+       x1="305.89481"
+       y1="-120.46718"
+       x2="306.04715"
+       y2="-120.46718" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5677-7">
+      <stop
+         style="stop-color:#ff2de7;stop-opacity:1"
+         offset="0"
+         id="stop5679-1" />
+      <stop
+         style="stop-color:#7b009b;stop-opacity:1"
+         offset="1"
+         id="stop5681-4" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043-9-6-1"
+       id="radialGradient5721-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.64273656,1.224542,-1.4441796,0.7171335,16.526738,477.02976)"
+       cx="-306.03387"
+       cy="-120.8595"
+       fx="-306.03387"
+       fy="-120.8595"
+       r="3.03685" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5043-9-6-1">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5045-4-8-8" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5047-1-2-6" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5655-9"
+       id="linearGradient5719-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0247755,0,0,0.92090367,303.84649,129.09036)"
+       x1="-300.82822"
+       y1="-126.31032"
+       x2="-300.82822"
+       y2="-114.83224" />
+    <linearGradient
+       id="linearGradient5655-9"
+       inkscape:collect="always">
+      <stop
+         id="stop5657-5"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1" />
+      <stop
+         id="stop5659-1"
+         offset="1"
+         style="stop-color:#707e83;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       y2="-36.569096"
+       x2="-219.25159"
+       y1="-43.842201"
+       x1="-219.25159"
+       gradientTransform="matrix(-0.97877933,0,0,0.78119332,-218.97584,51.325392)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5758"
+       xlink:href="#linearGradient5853"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5853"
+       inkscape:collect="always">
+      <stop
+         id="stop5855"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         id="stop5857"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5626"
+       id="linearGradient5632"
+       x1="-25.743168"
+       y1="-243.09763"
+       x2="-23.90864"
+       y2="-240.62437"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6571758,0,0,1.0085905,46.149483,249.53936)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5626">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop5628" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:0;"
+         offset="1"
+         id="stop5630" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4971"
+       id="linearGradient4977"
+       x1="-105.74262"
+       y1="-282.20282"
+       x2="-102.94624"
+       y2="-282.20282"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4971">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4973" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4975" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4786"
+       id="linearGradient4792"
+       x1="-106.91152"
+       y1="280.91522"
+       x2="-101.28181"
+       y2="282.32028"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.60027296,0,0,0.696962,91.940589,-191.45315)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4786">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop4788" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop4790" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5677"
+       id="linearGradient5449-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.68621958,0,0,0.76218683,-188.89688,109.60097)"
+       x1="305.89481"
+       y1="-120.46718"
+       x2="306.04715"
+       y2="-120.46718" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5677">
+      <stop
+         style="stop-color:#ff2de7;stop-opacity:1"
+         offset="0"
+         id="stop5679" />
+      <stop
+         style="stop-color:#7b009b;stop-opacity:1"
+         offset="1"
+         id="stop5681" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043-9-6"
+       id="radialGradient5447-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.64273656,1.224542,1.4441796,0.7171335,-3.1640994,476.83323)"
+       cx="-306.03387"
+       cy="-120.8595"
+       fx="-306.03387"
+       fy="-120.8595"
+       r="3.03685" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5043-9-6">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5045-4-8" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5047-1-2" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5655"
+       id="linearGradient5443-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.75005399,0,0,0.85573606,208.06197,120.96548)"
+       x1="-300.82822"
+       y1="-126.31032"
+       x2="-300.82822"
+       y2="-114.83224" />
+    <linearGradient
+       id="linearGradient5655"
+       inkscape:collect="always">
+      <stop
+         id="stop5657"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1" />
+      <stop
+         id="stop5659"
+         offset="1"
+         style="stop-color:#707e83;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5661"
+       id="linearGradient5667"
+       x1="-219.25159"
+       y1="-43.842201"
+       x2="-219.25159"
+       y2="-36.569096"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.77824526,0,0,0.72964259,189.11899,48.738021)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5661">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop5663" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop5665" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5206"
+       id="linearGradient5212"
+       x1="-304.49771"
+       y1="-142.89493"
+       x2="-262.4259"
+       y2="-143.92334"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5206">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop5208" />
+      <stop
+         style="stop-color:#dededd;stop-opacity:0;"
+         offset="1"
+         id="stop5210" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5388"
+       id="linearGradient5394"
+       x1="-283.80222"
+       y1="-143.74782"
+       x2="-283.80222"
+       y2="-141.12897"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69617626,0,0,0.77539869,204.63341,113.36017)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5388">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop5390" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop5392" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5376"
+       id="radialGradient5382"
+       cx="-284.44626"
+       cy="-153.18155"
+       fx="-284.44626"
+       fy="-153.18155"
+       r="17.449057"
+       gradientTransform="matrix(0.52159422,0.00570372,-0.00515056,0.61959156,154.17873,98.370923)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5376">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop5378" />
+      <stop
+         style="stop-color:#434542;stop-opacity:1"
+         offset="1"
+         id="stop5380" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3617"
+       id="linearGradient3623"
+       x1="1.421198"
+       y1="19.01931"
+       x2="1.421198"
+       y2="34.927505"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0329046,0,0,0.75231698,-4.0458192,-2.1508414)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3617"
+       id="linearGradient3627"
+       gradientUnits="userSpaceOnUse"
+       x1="1.421198"
+       y1="19.01931"
+       x2="1.421198"
+       y2="34.927505"
+       gradientTransform="translate(27.998451,0)" />
+    <inkscape:perspective
+       id="perspective3637"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3617-8"
+       id="linearGradient3627-1"
+       gradientUnits="userSpaceOnUse"
+       x1="1.421198"
+       y1="19.01931"
+       x2="1.421198"
+       y2="34.927505"
+       gradientTransform="translate(27.998451,0)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3617-8">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3619-2" />
+      <stop
+         style="stop-color:#0b0c0d;stop-opacity:1"
+         offset="1"
+         id="stop3621-4" />
+    </linearGradient>
+    <linearGradient
+       y2="34.927505"
+       x2="1.421198"
+       y1="19.01931"
+       x1="1.421198"
+       gradientTransform="matrix(0.68621958,0,0,0.68621958,15.319865,-0.89371418)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3646"
+       xlink:href="#linearGradient3617-8"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5853"
+       id="linearGradient2890"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.97877933,0,0,0.78119332,232.83687,51.325392)"
+       x1="-219.25159"
+       y1="-43.842201"
+       x2="-219.25159"
+       y2="-36.569096" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5655-9"
+       id="linearGradient2892"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0247755,0,0,0.92090367,289.98546,129.09036)"
+       x1="-300.82822"
+       y1="-126.31032"
+       x2="-300.82822"
+       y2="-114.83224" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3617"
+       id="linearGradient2894"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0329046,0,0,0.75231698,-17.906854,-2.1508414)"
+       x1="1.421198"
+       y1="19.01931"
+       x2="1.421198"
+       y2="34.927505" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043-9-6-1"
+       id="radialGradient2896"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.64273656,1.224542,1.4441796,0.7171335,-2.6657025,477.02976)"
+       cx="-306.03387"
+       cy="-120.8595"
+       fx="-306.03387"
+       fy="-120.8595"
+       r="3.03685" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5677-7"
+       id="linearGradient2898"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99553756,0,0,0.89724059,-283.19849,126.21271)"
+       x1="305.89481"
+       y1="-120.46718"
+       x2="306.04715"
+       y2="-120.46718" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4555"
+       id="linearGradient2900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.68621958,0,0,0.68621958,156.87281,47.327606)"
+       x1="-257.51324"
+       y1="-50.301723"
+       x2="-257.49792"
+       y2="-51.439991" />
+    <inkscape:perspective
+       id="perspective2910"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5853-9"
+       id="linearGradient2890-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.97877933,0,0,0.78119332,232.83687,51.325392)"
+       x1="-219.25159"
+       y1="-43.842201"
+       x2="-219.25159"
+       y2="-36.569096" />
+    <linearGradient
+       id="linearGradient5853-9"
+       inkscape:collect="always">
+      <stop
+         id="stop5855-9"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         id="stop5857-6"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5655-9-5"
+       id="linearGradient2892-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0247755,0,0,0.92090367,290.97234,129.09035)"
+       x1="-300.82822"
+       y1="-126.31032"
+       x2="-300.82822"
+       y2="-114.83224" />
+    <linearGradient
+       id="linearGradient5655-9-5"
+       inkscape:collect="always">
+      <stop
+         id="stop5657-5-8"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1" />
+      <stop
+         id="stop5659-1-7"
+         offset="1"
+         style="stop-color:#707e83;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3617-3"
+       id="linearGradient2894-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0329046,0,0,0.75231698,-16.919972,-2.1508407)"
+       x1="1.421198"
+       y1="19.01931"
+       x2="1.421198"
+       y2="34.927505" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3617-3">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3619-4" />
+      <stop
+         style="stop-color:#0b0c0d;stop-opacity:1"
+         offset="1"
+         id="stop3621-6" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043-9-6-1-1"
+       id="radialGradient2896-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.64273656,1.224542,1.4441796,0.7171335,-3.6525853,477.02975)"
+       cx="-306.03387"
+       cy="-120.8595"
+       fx="-306.03387"
+       fy="-120.8595"
+       r="3.03685" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5043-9-6-1-1">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5045-4-8-8-6" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5047-1-2-6-8" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5677-7-2"
+       id="linearGradient2898-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99553756,0,0,0.89724059,-284.18537,126.2127)"
+       x1="305.89481"
+       y1="-120.46718"
+       x2="306.04715"
+       y2="-120.46718" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5677-7-2">
+      <stop
+         style="stop-color:#ff2de7;stop-opacity:1"
+         offset="0"
+         id="stop5679-1-6" />
+      <stop
+         style="stop-color:#7b009b;stop-opacity:1"
+         offset="1"
+         id="stop5681-4-3" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4555-8"
+       id="linearGradient2900-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9295656,0,0,1.1136035,220.46357,68.767752)"
+       x1="-257.51324"
+       y1="-50.301723"
+       x2="-257.49792"
+       y2="-51.439991" />
+    <linearGradient
+       id="linearGradient4555-8"
+       inkscape:collect="always">
+      <stop
+         id="stop4557-5"
+         offset="0"
+         style="stop-color:#545652;stop-opacity:1;" />
+      <stop
+         id="stop4559-4"
+         offset="1"
+         style="stop-color:#80837d;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       y2="-36.569096"
+       x2="-219.25159"
+       y1="-43.842201"
+       x1="-219.25159"
+       gradientTransform="matrix(0.97877933,0,0,0.78119332,231.84999,51.325392)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2944"
+       xlink:href="#linearGradient5853-9"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4555-8"
+       id="linearGradient3017"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9295656,0,0,1.1136035,245.41352,68.767752)"
+       x1="-257.51324"
+       y1="-50.301723"
+       x2="-257.49792"
+       y2="-51.439991" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313708"
+     inkscape:cx="30.024929"
+     inkscape:cy="6.5961333"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:window-width="1280"
+     inkscape:window-height="752"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2855"
+       empspacing="5"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3884">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     transform="translate(8.5714283,-0.14285715)">
+    <rect
+       style="fill:#cc0000;fill-opacity:0;stroke:none"
+       id="rect5861"
+       width="32.938541"
+       height="32.938541"
+       x="-9.7751017"
+       y="-0.79568303"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
+    <path
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       d="m 1.9145026,1.3173618 c -4.6831399,0 -8.4777215,3.7603186 -8.4777215,8.4276345 l 0,4.3960947 c 0,0.493488 0.047692,0.966938 0.1290984,1.436772 l 1.0219853,0 c -0.087239,-0.46606 -0.1291054,-0.944348 -0.1291054,-1.436772 l 0,-4.3960947 c 0,-4.2990218 4.2056809,-7.7414149 8.5192778,-7.7414149 l 7.6873528,0 c 4.313596,0 7.789175,3.4423931 7.789175,7.7414149 l 0,4.3960947 c 0,0.492424 -0.04186,0.970712 -0.129105,1.436772 l 0.974072,0 c 0.08141,-0.469834 0.129105,-0.943284 0.129105,-1.436772 l 0,-4.3960947 c 0,-4.6673159 -3.794582,-8.4276345 -8.477721,-8.4276345 l -9.0364134,0 z"
+       id="rect5549"
+       sodipodi:nodetypes="ccccccccccccccccc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="fill:url(#radialGradient5382);fill-opacity:1;stroke:none"
+       d="m -4.9451328,6.6771159 c -0.2382967,-0.1875506 -0.3328176,-0.4368942 -0.3134387,-0.826805 0.019908,-0.4006407 0.097834,-0.5213766 0.7600657,-1.1777397 3.2353396,-3.2067063 9.3093493,-4.6899303 15.0315108,-3.670585 2.613773,0.4656271 5.073336,1.4865771 6.785537,2.8166358 0.921369,0.7157372 1.613595,1.4870802 1.691896,1.8852778 0.106689,0.542581 -0.217518,1.088092 -0.646986,1.0885949 C 18.22184,6.7926704 18.094005,6.725193 17.802257,6.4963114 14.60793,3.9901815 9.5705605,3.0274559 4.6388625,3.5603368 1.2946491,3.9216742 -1.6363077,4.7181575 -3.9060775,6.4188147 -4.4662772,6.8385521 -4.6743153,6.8902619 -4.9451328,6.6771159 l 0,0 z"
+       id="path5202"
+       sodipodi:nodetypes="cssssssssscc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:url(#linearGradient5394);fill-opacity:1;stroke:none;stroke-width:1.36950052;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       d="M 5.9838584,0.17166026 C 5.1095585,0.20663073 4.2382243,0.29156016 3.394953,0.42230013 0.04247471,0.94208089 -2.9747116,2.2080433 -4.915651,4.1317997 c -0.011904,0.011787 -0.031676,0.013182 -0.043511,0.025045 -0.016864,0.023062 -0.031489,0.048317 -0.043511,0.075137 -0.5805135,0.4714269 -0.7747954,1.3841486 -0.4133546,2.1053935 0.3553353,0.7090636 1.1019287,0.9693649 1.7404406,0.6516606 0.011487,-0.00543 0.032163,0.00621 0.043511,0 0.030839,-0.011883 0.060226,-0.028799 0.087022,-0.050091 0.00557,-0.0031 0.016221,0.00388 0.021721,0 0.013158,-0.00977 0.030284,-0.015352 0.043511,-0.025045 0.00815,-0.00543 0.013575,-0.019075 0.021721,-0.025045 4.42090043,-3.2482857 12.7875743,-3.6783329 18.513938,-1.1109257 0.801771,0.359467 1.522996,0.5612214 2.153794,1.0106657 0.0069,0.00871 0.01416,0.01707 0.02172,0.025045 0.0083,0.00543 0.0135,0.019075 0.02172,0.025045 0.01873,0.028221 0.04073,0.053561 0.06523,0.075137 0.662378,0.4405821 1.532062,0.1866468 1.914485,-0.5764698 0.32666,-0.6518311 0.193384,-1.4553767 -0.261066,-1.9550127 -0.0062,-0.017277 -0.01349,-0.034053 -0.02172,-0.050168 -0.0042,-0.00388 -0.01747,0.00388 -0.02172,0 -0.0069,-0.00871 -0.01417,-0.017069 -0.02172,-0.025045 -0.01914,-0.018377 -0.02339,-0.057923 -0.04351,-0.075137 2.23e-4,-0.00835 2.23e-4,-0.016699 0,-0.025045 C 17.626438,2.9422684 15.867096,1.9315671 13.750505,1.2243105 12.113516,0.67731325 10.374064,0.34798591 8.6162053,0.22174326 7.7372758,0.15862581 6.8580887,0.13665877 5.9837888,0.1716525 l 6.96e-5,7.76e-6 z M 7.2891889,1.1336088 c 2.1378181,0.035901 4.2887031,0.3670427 6.2655851,1.0276281 l 0.02172,0 c 1.92325,0.6454806 3.513456,1.4252715 4.633924,2.4969112 0.03311,0.074934 0.08725,0.1372993 0.152288,0.1754495 0.336545,0.2238499 0.455369,0.7150959 0.261066,1.1028263 -0.16516,0.3295754 -0.503022,0.478072 -0.804953,0.3759598 -0.03188,-0.03246 -0.06896,-0.058069 -0.108777,-0.075136 C 16.997965,5.7085187 16.200286,5.2394489 15.295181,4.833644 12.29636,3.4891337 8.6839711,2.9762928 5.2223808,3.229538 1.8200146,3.4784567 -1.420665,4.4860717 -3.7626438,6.1871102 c -0.00557,0.00388 -0.016499,-0.00388 -0.021721,0 -0.014986,0.00717 -0.029537,0.015544 -0.043511,0.025045 -0.014986,0.00717 -0.029537,0.015544 -0.043511,0.025045 -0.00829,0.00621 -0.013506,0.01892 -0.021721,0.025045 -0.3321179,0.2011152 -0.7460434,0.052185 -0.9354868,-0.3258303 -0.1865196,-0.3722068 -0.088115,-0.8432306 0.2175551,-1.0777654 0.014982,-0.00717 0.029532,-0.015544 0.043511,-0.025045 0.051565,-0.028565 0.096846,-0.072038 0.130533,-0.1253199 1.7837016,-1.7457008 4.67971835,-2.821787 7.9190054,-3.3240282 1.2303452,-0.1907636 2.524523,-0.272227 3.8072138,-0.2506399 l -3.48e-5,-7.7e-6 z"
+       id="path5194"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963"
+       sodipodi:nodetypes="csssssssssssssssssssssscssccccccsssssssssssssscscc" />
+    <path
+       sodipodi:type="arc"
+       style="fill:none;stroke:url(#linearGradient5212);stroke-width:1.41199458;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       id="path5204"
+       sodipodi:cx="-285.49203"
+       sodipodi:cy="-135.7495"
+       sodipodi:rx="18.775068"
+       sodipodi:ry="9.3875341"
+       d="m -300.83968,-141.15673 a 18.775068,9.3875341 0 0 1 30.74554,0.0358"
+       transform="matrix(-0.70657745,0,0,0.70986232,-194.81186,105.68217)"
+       sodipodi:start="3.7554218"
+       sodipodi:end="5.6740176"
+       sodipodi:open="true"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       d="m -6.5233133,22.735232 0,0.02141 c 0,4.667316 3.7603187,8.427634 8.4276344,8.427634 l 6.3475307,0 0.2625302,-0.900842 -6.3475307,0 c -4.2990216,0 -7.7414148,-3.442393 -7.7414148,-7.741415 l 0,-0.02141 -0.9487498,0.214623 z"
+       id="rect5551"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       ry="1.4981471"
+       rx="1.4981471"
+       y="1.9545606"
+       x="28.614576"
+       height="6.9623013"
+       width="2.9962943"
+       id="rect4784"
+       style="fill:#555753;fill-opacity:1;stroke:url(#linearGradient4792);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       transform="matrix(0,1,1,0,0,0)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       sodipodi:type="inkscape:offset"
+       inkscape:radius="-1.0081301"
+       inkscape:original="M -103.46875 -287.5 C -104.58751 -287.5 -105.5 -286.58751 -105.5 -285.46875 L -105.5 -279.53125 C -105.5 -278.41249 -104.58751 -277.5 -103.46875 -277.5 L -102.53125 -277.5 C -101.41249 -277.5 -100.5 -278.41249 -100.5 -279.53125 L -100.5 -285.46875 C -100.5 -286.58751 -101.41249 -287.5 -102.53125 -287.5 L -103.46875 -287.5 z "
+       style="opacity:0.6081081;fill:none;stroke:url(#linearGradient4977);stroke-width:2.1435864;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       id="path4967"
+       d="m -103.46875,-286.5 c -0.57059,0 -1.03125,0.46066 -1.03125,1.03125 l 0,5.9375 c 0,0.57059 0.46066,1.03125 1.03125,1.03125 l 0.9375,0 c 0.57059,0 1.03125,-0.46066 1.03125,-1.03125 l 0,-5.9375 c 0,-0.57059 -0.46066,-1.03125 -1.03125,-1.03125 l -0.9375,0 z"
+       transform="matrix(0,0.35041293,0.62106611,0,180.86297,66.235476)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       transform="matrix(0,1,1,0,0,0)"
+       style="fill:url(#linearGradient5632);fill-opacity:1;stroke:none"
+       id="rect5572"
+       width="1.99455"
+       height="5.9798374"
+       x="29.110865"
+       y="2.4541459"
+       rx="0.99727499"
+       ry="0.99727499"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient5758);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       d="m -4.7126309,12.654361 c -1.8622525,0 -3.3612598,1.30267 -3.3612598,2.921028 l 0,5.131543 c 0,1.618351 1.4990073,2.921029 3.3612598,2.921029 l 1.5803872,0.0017 0.01985,-10.983712 c -1.1943624,0.02977 -0.4950442,0.0084 -1.6002373,0.0084 l 0,-6.9e-5 1e-7,8.1e-5 z"
+       id="path5707"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient5719-5);fill-opacity:1;stroke:none"
+       id="rect5709"
+       width="1.9106927"
+       height="10.99095"
+       x="-5.5105519"
+       y="12.139328"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient3623);fill-opacity:1;stroke:none"
+       id="rect5711"
+       width="2.0266206"
+       height="11.968007"
+       x="-3.5911674"
+       y="12.157709"
+       rx="1.0133103"
+       ry="1.0133103"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       sodipodi:nodetypes="cccccccc"
+       id="path5713"
+       d="m -5.238356,13.125441 c -1.2499833,0 -2.2561527,1.137149 -2.2561527,2.549866 l 0,4.479482 c 0,1.41271 1.0061694,2.549858 2.2561527,2.549858 l 1.6478054,-0.02288 0,-9.556232 c -0.8016761,0.02597 -0.9059746,0 -1.6478054,0 l 0,-9.6e-5 z"
+       style="opacity:0.5;fill:url(#radialGradient5721-4);fill-opacity:1;stroke:none"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient5723-8);fill-opacity:1;stroke:none"
+       id="rect5715"
+       width="1.9859439"
+       height="7.995038"
+       x="6.5732913"
+       y="14.12711"
+       rx="0.99742299"
+       ry="0.99742305"
+       transform="scale(-1,1)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#dee1e3;fill-opacity:1;stroke:none"
+       id="path5859"
+       sodipodi:cx="-244.01906"
+       sodipodi:cy="-24.045986"
+       sodipodi:rx="0.83739835"
+       sodipodi:ry="1.3739837"
+       d="m -243.18166,-24.045986 a 0.83739835,1.3739837 0 1 1 -1.6748,0 0.83739835,1.3739837 0 1 1 1.6748,0 z"
+       transform="matrix(0.8690986,0,0,0.73826906,214.78423,47.887046)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient4984);fill-opacity:1;stroke:none"
+       id="rect5811-4"
+       width="1.0533623"
+       height="2.3305926"
+       x="30.146362"
+       y="-3.4252403"
+       rx="0.50398123"
+       ry="0.50398123"
+       transform="matrix(0,1,-1,0,0,0)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       y="-0.79568303"
+       x="-9.7751017"
+       height="32.938541"
+       width="32.938541"
+       id="rect5863"
+       style="fill:#ffffff;fill-opacity:0;stroke:none"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
+    <path
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       sodipodi:nodetypes="ccccccccc"
+       id="path2878"
+       d="m 17.586784,12.654361 c 1.862252,0 3.36126,1.30267 3.36126,2.921028 l 0,5.131543 c 0,1.618351 -1.499008,2.921029 -3.36126,2.921029 l -1.580387,0.0017 -0.01985,-10.983712 c 1.194362,0.02977 0.495044,0.0084 1.600237,0.0084 l 0,-6.9e-5 0,8.1e-5 z"
+       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient2944);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220" />
+    <rect
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       y="12.139328"
+       x="-18.384705"
+       height="10.99095"
+       width="1.9106927"
+       id="rect2880"
+       style="fill:url(#linearGradient2892-5);fill-opacity:1;stroke:none"
+       transform="scale(-1,1)" />
+    <rect
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       ry="1.0133103"
+       rx="1.0133103"
+       y="12.157709"
+       x="-16.465319"
+       height="11.968007"
+       width="2.0266206"
+       id="rect2882"
+       style="fill:url(#linearGradient2894-1);fill-opacity:1;stroke:none"
+       transform="scale(-1,1)" />
+    <path
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       style="opacity:0.5;fill:url(#radialGradient2896-0);fill-opacity:1;stroke:none"
+       d="m 18.112509,13.125441 c 1.249983,0 2.256153,1.137149 2.256153,2.549866 l 0,4.479482 c 0,1.41271 -1.00617,2.549858 -2.256153,2.549858 l -1.647805,-0.02288 0,-9.556232 c 0.801676,0.02597 0.905974,0 1.647805,0 l 0,-9.6e-5 z"
+       id="path2884"
+       sodipodi:nodetypes="cccccccc" />
+    <rect
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       ry="0.99742305"
+       rx="0.99742299"
+       y="14.12711"
+       x="19.447443"
+       height="7.995038"
+       width="1.9859439"
+       id="rect2886"
+       style="fill:url(#linearGradient2898-1);fill-opacity:1;stroke:none" />
+    <rect
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       ry="0.50398123"
+       rx="0.50398123"
+       y="11.170098"
+       x="-19.396423"
+       height="3.9994802"
+       width="0.93696725"
+       id="rect2888"
+       style="fill:url(#linearGradient2900-3);fill-opacity:1;stroke:none"
+       transform="scale(-1,1)" />
+    <rect
+       transform="scale(-1,1)"
+       style="fill:url(#linearGradient3017);fill-opacity:1;stroke:none"
+       id="rect3015"
+       width="0.93696725"
+       height="3.9994802"
+       x="5.5535235"
+       y="11.170098"
+       rx="0.50398123"
+       ry="0.50398123"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+  </g>
+</svg>
--- a/pidgin/pixmaps/toolbar/32/scalable/voice-call.svg	Wed Aug 19 16:19:45 2009 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,990 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="32"
-   height="32"
-   id="svg3879"
-   sodipodi:version="0.32"
-   inkscape:version="0.46+devel r20974"
-   version="1.0"
-   sodipodi:docname="voice-32.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs3881">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3617">
-      <stop
-         style="stop-color:#2e3436;stop-opacity:1;"
-         offset="0"
-         id="stop3619" />
-      <stop
-         style="stop-color:#0b0c0d;stop-opacity:1"
-         offset="1"
-         id="stop3621" />
-    </linearGradient>
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 24 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="48 : 24 : 1"
-       inkscape:persp3d-origin="24 : 16 : 1"
-       id="perspective96" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4555"
-       id="linearGradient4563"
-       gradientUnits="userSpaceOnUse"
-       x1="-257.51324"
-       y1="-50.301723"
-       x2="-257.49792"
-       y2="-51.439991"
-       gradientTransform="matrix(0.66407978,0,0,0.75715849,190.43006,50.728904)" />
-    <linearGradient
-       id="linearGradient4555"
-       inkscape:collect="always">
-      <stop
-         id="stop4557"
-         offset="0"
-         style="stop-color:#545652;stop-opacity:1;" />
-      <stop
-         id="stop4559"
-         offset="1"
-         style="stop-color:#80837d;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       gradientTransform="matrix(1.0450411,0,0,1.0014371,56.421478,-248.82007)"
-       inkscape:collect="always"
-       xlink:href="#linearGradient4976"
-       id="linearGradient4984"
-       x1="-24.687374"
-       y1="245.84587"
-       x2="-24.687374"
-       y2="247.61009"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4976">
-      <stop
-         style="stop-color:#555753;stop-opacity:1;"
-         offset="0"
-         id="stop4978" />
-      <stop
-         style="stop-color:#808080;stop-opacity:1"
-         offset="1"
-         id="stop4980" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4555"
-       id="linearGradient4553"
-       x1="-257.51324"
-       y1="-50.301723"
-       x2="-257.49792"
-       y2="-51.439991"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.68621958,0,0,0.68621958,170.73384,47.327606)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5677-7"
-       id="linearGradient5723-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.99553756,0,0,0.89724059,-297.05952,126.21271)"
-       x1="305.89481"
-       y1="-120.46718"
-       x2="306.04715"
-       y2="-120.46718" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5677-7">
-      <stop
-         style="stop-color:#ff2de7;stop-opacity:1"
-         offset="0"
-         id="stop5679-1" />
-      <stop
-         style="stop-color:#7b009b;stop-opacity:1"
-         offset="1"
-         id="stop5681-4" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5043-9-6-1"
-       id="radialGradient5721-4"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.64273656,1.224542,-1.4441796,0.7171335,16.526738,477.02976)"
-       cx="-306.03387"
-       cy="-120.8595"
-       fx="-306.03387"
-       fy="-120.8595"
-       r="3.03685" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5043-9-6-1">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop5045-4-8-8" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop5047-1-2-6" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5655-9"
-       id="linearGradient5719-5"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0247755,0,0,0.92090367,303.84649,129.09036)"
-       x1="-300.82822"
-       y1="-126.31032"
-       x2="-300.82822"
-       y2="-114.83224" />
-    <linearGradient
-       id="linearGradient5655-9"
-       inkscape:collect="always">
-      <stop
-         id="stop5657-5"
-         offset="0"
-         style="stop-color:#2e3436;stop-opacity:1" />
-      <stop
-         id="stop5659-1"
-         offset="1"
-         style="stop-color:#707e83;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       y2="-36.569096"
-       x2="-219.25159"
-       y1="-43.842201"
-       x1="-219.25159"
-       gradientTransform="matrix(-0.97877933,0,0,0.78119332,-218.97584,51.325392)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient5758"
-       xlink:href="#linearGradient5853"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient5853"
-       inkscape:collect="always">
-      <stop
-         id="stop5855"
-         offset="0"
-         style="stop-color:#888a85;stop-opacity:1" />
-      <stop
-         id="stop5857"
-         offset="1"
-         style="stop-color:#555753;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5626"
-       id="linearGradient5632"
-       x1="-25.743168"
-       y1="-243.09763"
-       x2="-23.90864"
-       y2="-240.62437"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6571758,0,0,1.0085905,46.149483,249.53936)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5626">
-      <stop
-         style="stop-color:#babdb6;stop-opacity:1;"
-         offset="0"
-         id="stop5628" />
-      <stop
-         style="stop-color:#babdb6;stop-opacity:0;"
-         offset="1"
-         id="stop5630" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4971"
-       id="linearGradient4977"
-       x1="-105.74262"
-       y1="-282.20282"
-       x2="-102.94624"
-       y2="-282.20282"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4971">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop4973" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop4975" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4786"
-       id="linearGradient4792"
-       x1="-106.91152"
-       y1="280.91522"
-       x2="-101.28181"
-       y2="282.32028"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.60027296,0,0,0.696962,91.940589,-191.45315)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4786">
-      <stop
-         style="stop-color:#555753;stop-opacity:1"
-         offset="0"
-         id="stop4788" />
-      <stop
-         style="stop-color:#000000;stop-opacity:1"
-         offset="1"
-         id="stop4790" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5677"
-       id="linearGradient5449-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.68621958,0,0,0.76218683,-188.89688,109.60097)"
-       x1="305.89481"
-       y1="-120.46718"
-       x2="306.04715"
-       y2="-120.46718" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5677">
-      <stop
-         style="stop-color:#ff2de7;stop-opacity:1"
-         offset="0"
-         id="stop5679" />
-      <stop
-         style="stop-color:#7b009b;stop-opacity:1"
-         offset="1"
-         id="stop5681" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5043-9-6"
-       id="radialGradient5447-5"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.64273656,1.224542,1.4441796,0.7171335,-3.1640994,476.83323)"
-       cx="-306.03387"
-       cy="-120.8595"
-       fx="-306.03387"
-       fy="-120.8595"
-       r="3.03685" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5043-9-6">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop5045-4-8" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop5047-1-2" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5655"
-       id="linearGradient5443-6"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.75005399,0,0,0.85573606,208.06197,120.96548)"
-       x1="-300.82822"
-       y1="-126.31032"
-       x2="-300.82822"
-       y2="-114.83224" />
-    <linearGradient
-       id="linearGradient5655"
-       inkscape:collect="always">
-      <stop
-         id="stop5657"
-         offset="0"
-         style="stop-color:#2e3436;stop-opacity:1" />
-      <stop
-         id="stop5659"
-         offset="1"
-         style="stop-color:#707e83;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5661"
-       id="linearGradient5667"
-       x1="-219.25159"
-       y1="-43.842201"
-       x2="-219.25159"
-       y2="-36.569096"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.77824526,0,0,0.72964259,189.11899,48.738021)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5661">
-      <stop
-         style="stop-color:#888a85;stop-opacity:1;"
-         offset="0"
-         id="stop5663" />
-      <stop
-         style="stop-color:#555753;stop-opacity:1"
-         offset="1"
-         id="stop5665" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5206"
-       id="linearGradient5212"
-       x1="-304.49771"
-       y1="-142.89493"
-       x2="-262.4259"
-       y2="-143.92334"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5206">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0"
-         id="stop5208" />
-      <stop
-         style="stop-color:#dededd;stop-opacity:0;"
-         offset="1"
-         id="stop5210" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient5394"
-       x1="-283.80222"
-       y1="-143.74782"
-       x2="-283.80222"
-       y2="-141.12897"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.69617626,0,0,0.77539869,204.63341,113.36017)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5388">
-      <stop
-         style="stop-color:#555753;stop-opacity:1"
-         offset="0"
-         id="stop5390" />
-      <stop
-         style="stop-color:#000000;stop-opacity:1"
-         offset="1"
-         id="stop5392" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5376"
-       id="radialGradient5382"
-       cx="-284.44626"
-       cy="-153.18155"
-       fx="-284.44626"
-       fy="-153.18155"
-       r="17.449057"
-       gradientTransform="matrix(0.52159422,0.00570372,-0.00515056,0.61959156,154.17873,98.370923)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5376">
-      <stop
-         style="stop-color:#babdb6;stop-opacity:1"
-         offset="0"
-         id="stop5378" />
-      <stop
-         style="stop-color:#434542;stop-opacity:1"
-         offset="1"
-         id="stop5380" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3617"
-       id="linearGradient3623"
-       x1="1.421198"
-       y1="19.01931"
-       x2="1.421198"
-       y2="34.927505"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0329046,0,0,0.75231698,-4.0458192,-2.1508414)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3617"
-       id="linearGradient3627"
-       gradientUnits="userSpaceOnUse"
-       x1="1.421198"
-       y1="19.01931"
-       x2="1.421198"
-       y2="34.927505"
-       gradientTransform="translate(27.998451,0)" />
-    <inkscape:perspective
-       id="perspective3637"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3617-8"
-       id="linearGradient3627-1"
-       gradientUnits="userSpaceOnUse"
-       x1="1.421198"
-       y1="19.01931"
-       x2="1.421198"
-       y2="34.927505"
-       gradientTransform="translate(27.998451,0)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3617-8">
-      <stop
-         style="stop-color:#2e3436;stop-opacity:1;"
-         offset="0"
-         id="stop3619-2" />
-      <stop
-         style="stop-color:#0b0c0d;stop-opacity:1"
-         offset="1"
-         id="stop3621-4" />
-    </linearGradient>
-    <linearGradient
-       y2="34.927505"
-       x2="1.421198"
-       y1="19.01931"
-       x1="1.421198"
-       gradientTransform="matrix(0.68621958,0,0,0.68621958,15.319865,-0.89371418)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3646"
-       xlink:href="#linearGradient3617-8"
-       inkscape:collect="always" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5853"
-       id="linearGradient2890"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97877933,0,0,0.78119332,232.83687,51.325392)"
-       x1="-219.25159"
-       y1="-43.842201"
-       x2="-219.25159"
-       y2="-36.569096" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5655-9"
-       id="linearGradient2892"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0247755,0,0,0.92090367,289.98546,129.09036)"
-       x1="-300.82822"
-       y1="-126.31032"
-       x2="-300.82822"
-       y2="-114.83224" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3617"
-       id="linearGradient2894"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0329046,0,0,0.75231698,-17.906854,-2.1508414)"
-       x1="1.421198"
-       y1="19.01931"
-       x2="1.421198"
-       y2="34.927505" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5043-9-6-1"
-       id="radialGradient2896"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.64273656,1.224542,1.4441796,0.7171335,-2.6657025,477.02976)"
-       cx="-306.03387"
-       cy="-120.8595"
-       fx="-306.03387"
-       fy="-120.8595"
-       r="3.03685" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5677-7"
-       id="linearGradient2898"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.99553756,0,0,0.89724059,-283.19849,126.21271)"
-       x1="305.89481"
-       y1="-120.46718"
-       x2="306.04715"
-       y2="-120.46718" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4555"
-       id="linearGradient2900"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.68621958,0,0,0.68621958,156.87281,47.327606)"
-       x1="-257.51324"
-       y1="-50.301723"
-       x2="-257.49792"
-       y2="-51.439991" />
-    <inkscape:perspective
-       id="perspective2910"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5853-9"
-       id="linearGradient2890-4"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97877933,0,0,0.78119332,232.83687,51.325392)"
-       x1="-219.25159"
-       y1="-43.842201"
-       x2="-219.25159"
-       y2="-36.569096" />
-    <linearGradient
-       id="linearGradient5853-9"
-       inkscape:collect="always">
-      <stop
-         id="stop5855-9"
-         offset="0"
-         style="stop-color:#888a85;stop-opacity:1" />
-      <stop
-         id="stop5857-6"
-         offset="1"
-         style="stop-color:#555753;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5655-9-5"
-       id="linearGradient2892-5"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0247755,0,0,0.92090367,290.97234,129.09035)"
-       x1="-300.82822"
-       y1="-126.31032"
-       x2="-300.82822"
-       y2="-114.83224" />
-    <linearGradient
-       id="linearGradient5655-9-5"
-       inkscape:collect="always">
-      <stop
-         id="stop5657-5-8"
-         offset="0"
-         style="stop-color:#2e3436;stop-opacity:1" />
-      <stop
-         id="stop5659-1-7"
-         offset="1"
-         style="stop-color:#707e83;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3617-3"
-       id="linearGradient2894-1"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0329046,0,0,0.75231698,-16.919972,-2.1508407)"
-       x1="1.421198"
-       y1="19.01931"
-       x2="1.421198"
-       y2="34.927505" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3617-3">
-      <stop
-         style="stop-color:#2e3436;stop-opacity:1;"
-         offset="0"
-         id="stop3619-4" />
-      <stop
-         style="stop-color:#0b0c0d;stop-opacity:1"
-         offset="1"
-         id="stop3621-6" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5043-9-6-1-1"
-       id="radialGradient2896-0"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.64273656,1.224542,1.4441796,0.7171335,-3.6525853,477.02975)"
-       cx="-306.03387"
-       cy="-120.8595"
-       fx="-306.03387"
-       fy="-120.8595"
-       r="3.03685" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5043-9-6-1-1">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop5045-4-8-8-6" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop5047-1-2-6-8" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5677-7-2"
-       id="linearGradient2898-1"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.99553756,0,0,0.89724059,-284.18537,126.2127)"
-       x1="305.89481"
-       y1="-120.46718"
-       x2="306.04715"
-       y2="-120.46718" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5677-7-2">
-      <stop
-         style="stop-color:#ff2de7;stop-opacity:1"
-         offset="0"
-         id="stop5679-1-6" />
-      <stop
-         style="stop-color:#7b009b;stop-opacity:1"
-         offset="1"
-         id="stop5681-4-3" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4555-8"
-       id="linearGradient2900-3"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9295656,0,0,1.1136035,220.46357,68.767752)"
-       x1="-257.51324"
-       y1="-50.301723"
-       x2="-257.49792"
-       y2="-51.439991" />
-    <linearGradient
-       id="linearGradient4555-8"
-       inkscape:collect="always">
-      <stop
-         id="stop4557-5"
-         offset="0"
-         style="stop-color:#545652;stop-opacity:1;" />
-      <stop
-         id="stop4559-4"
-         offset="1"
-         style="stop-color:#80837d;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       y2="-36.569096"
-       x2="-219.25159"
-       y1="-43.842201"
-       x1="-219.25159"
-       gradientTransform="matrix(0.97877933,0,0,0.78119332,231.84999,51.325392)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient2944"
-       xlink:href="#linearGradient5853-9"
-       inkscape:collect="always" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4555-8"
-       id="linearGradient3017"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9295656,0,0,1.1136035,245.41352,68.767752)"
-       x1="-257.51324"
-       y1="-50.301723"
-       x2="-257.49792"
-       y2="-51.439991" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313708"
-     inkscape:cx="30.024929"
-     inkscape:cy="6.5961333"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1280"
-     inkscape:window-height="752"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2855"
-       empspacing="5"
-       visible="true"
-       enabled="true" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata3884">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     transform="translate(8.5714283,-0.14285715)">
-    <rect
-       style="fill:#cc0000;fill-opacity:0;stroke:none"
-       id="rect5861"
-       width="32.938541"
-       height="32.938541"
-       x="-9.7751017"
-       y="-0.79568303"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
-    <path
-       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
-       d="m 1.9145026,1.3173618 c -4.6831399,0 -8.4777215,3.7603186 -8.4777215,8.4276345 l 0,4.3960947 c 0,0.493488 0.047692,0.966938 0.1290984,1.436772 l 1.0219853,0 c -0.087239,-0.46606 -0.1291054,-0.944348 -0.1291054,-1.436772 l 0,-4.3960947 c 0,-4.2990218 4.2056809,-7.7414149 8.5192778,-7.7414149 l 7.6873528,0 c 4.313596,0 7.789175,3.4423931 7.789175,7.7414149 l 0,4.3960947 c 0,0.492424 -0.04186,0.970712 -0.129105,1.436772 l 0.974072,0 c 0.08141,-0.469834 0.129105,-0.943284 0.129105,-1.436772 l 0,-4.3960947 c 0,-4.6673159 -3.794582,-8.4276345 -8.477721,-8.4276345 l -9.0364134,0 z"
-       id="rect5549"
-       sodipodi:nodetypes="ccccccccccccccccc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="fill:url(#radialGradient5382);fill-opacity:1;stroke:none"
-       d="m -4.9451328,6.6771159 c -0.2382967,-0.1875506 -0.3328176,-0.4368942 -0.3134387,-0.826805 0.019908,-0.4006407 0.097834,-0.5213766 0.7600657,-1.1777397 3.2353396,-3.2067063 9.3093493,-4.6899303 15.0315108,-3.670585 2.613773,0.4656271 5.073336,1.4865771 6.785537,2.8166358 0.921369,0.7157372 1.613595,1.4870802 1.691896,1.8852778 0.106689,0.542581 -0.217518,1.088092 -0.646986,1.0885949 C 18.22184,6.7926704 18.094005,6.725193 17.802257,6.4963114 14.60793,3.9901815 9.5705605,3.0274559 4.6388625,3.5603368 1.2946491,3.9216742 -1.6363077,4.7181575 -3.9060775,6.4188147 -4.4662772,6.8385521 -4.6743153,6.8902619 -4.9451328,6.6771159 l 0,0 z"
-       id="path5202"
-       sodipodi:nodetypes="cssssssssscc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:url(#linearGradient5394);fill-opacity:1;stroke:none;stroke-width:1.36950052;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
-       d="M 5.9838584,0.17166026 C 5.1095585,0.20663073 4.2382243,0.29156016 3.394953,0.42230013 0.04247471,0.94208089 -2.9747116,2.2080433 -4.915651,4.1317997 c -0.011904,0.011787 -0.031676,0.013182 -0.043511,0.025045 -0.016864,0.023062 -0.031489,0.048317 -0.043511,0.075137 -0.5805135,0.4714269 -0.7747954,1.3841486 -0.4133546,2.1053935 0.3553353,0.7090636 1.1019287,0.9693649 1.7404406,0.6516606 0.011487,-0.00543 0.032163,0.00621 0.043511,0 0.030839,-0.011883 0.060226,-0.028799 0.087022,-0.050091 0.00557,-0.0031 0.016221,0.00388 0.021721,0 0.013158,-0.00977 0.030284,-0.015352 0.043511,-0.025045 0.00815,-0.00543 0.013575,-0.019075 0.021721,-0.025045 4.42090043,-3.2482857 12.7875743,-3.6783329 18.513938,-1.1109257 0.801771,0.359467 1.522996,0.5612214 2.153794,1.0106657 0.0069,0.00871 0.01416,0.01707 0.02172,0.025045 0.0083,0.00543 0.0135,0.019075 0.02172,0.025045 0.01873,0.028221 0.04073,0.053561 0.06523,0.075137 0.662378,0.4405821 1.532062,0.1866468 1.914485,-0.5764698 0.32666,-0.6518311 0.193384,-1.4553767 -0.261066,-1.9550127 -0.0062,-0.017277 -0.01349,-0.034053 -0.02172,-0.050168 -0.0042,-0.00388 -0.01747,0.00388 -0.02172,0 -0.0069,-0.00871 -0.01417,-0.017069 -0.02172,-0.025045 -0.01914,-0.018377 -0.02339,-0.057923 -0.04351,-0.075137 2.23e-4,-0.00835 2.23e-4,-0.016699 0,-0.025045 C 17.626438,2.9422684 15.867096,1.9315671 13.750505,1.2243105 12.113516,0.67731325 10.374064,0.34798591 8.6162053,0.22174326 7.7372758,0.15862581 6.8580887,0.13665877 5.9837888,0.1716525 l 6.96e-5,7.76e-6 z M 7.2891889,1.1336088 c 2.1378181,0.035901 4.2887031,0.3670427 6.2655851,1.0276281 l 0.02172,0 c 1.92325,0.6454806 3.513456,1.4252715 4.633924,2.4969112 0.03311,0.074934 0.08725,0.1372993 0.152288,0.1754495 0.336545,0.2238499 0.455369,0.7150959 0.261066,1.1028263 -0.16516,0.3295754 -0.503022,0.478072 -0.804953,0.3759598 -0.03188,-0.03246 -0.06896,-0.058069 -0.108777,-0.075136 C 16.997965,5.7085187 16.200286,5.2394489 15.295181,4.833644 12.29636,3.4891337 8.6839711,2.9762928 5.2223808,3.229538 1.8200146,3.4784567 -1.420665,4.4860717 -3.7626438,6.1871102 c -0.00557,0.00388 -0.016499,-0.00388 -0.021721,0 -0.014986,0.00717 -0.029537,0.015544 -0.043511,0.025045 -0.014986,0.00717 -0.029537,0.015544 -0.043511,0.025045 -0.00829,0.00621 -0.013506,0.01892 -0.021721,0.025045 -0.3321179,0.2011152 -0.7460434,0.052185 -0.9354868,-0.3258303 -0.1865196,-0.3722068 -0.088115,-0.8432306 0.2175551,-1.0777654 0.014982,-0.00717 0.029532,-0.015544 0.043511,-0.025045 0.051565,-0.028565 0.096846,-0.072038 0.130533,-0.1253199 1.7837016,-1.7457008 4.67971835,-2.821787 7.9190054,-3.3240282 1.2303452,-0.1907636 2.524523,-0.272227 3.8072138,-0.2506399 l -3.48e-5,-7.7e-6 z"
-       id="path5194"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963"
-       sodipodi:nodetypes="csssssssssssssssssssssscssccccccsssssssssssssscscc" />
-    <path
-       sodipodi:type="arc"
-       style="fill:none;stroke:url(#linearGradient5212);stroke-width:1.41199458;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       id="path5204"
-       sodipodi:cx="-285.49203"
-       sodipodi:cy="-135.7495"
-       sodipodi:rx="18.775068"
-       sodipodi:ry="9.3875341"
-       d="m -300.83968,-141.15673 a 18.775068,9.3875341 0 0 1 30.74554,0.0358"
-       transform="matrix(-0.70657745,0,0,0.70986232,-194.81186,105.68217)"
-       sodipodi:start="3.7554218"
-       sodipodi:end="5.6740176"
-       sodipodi:open="true"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
-       d="m -6.5233133,22.735232 0,0.02141 c 0,4.667316 3.7603187,8.427634 8.4276344,8.427634 l 6.3475307,0 0.2625302,-0.900842 -6.3475307,0 c -4.2990216,0 -7.7414148,-3.442393 -7.7414148,-7.741415 l 0,-0.02141 -0.9487498,0.214623 z"
-       id="rect5551"
-       sodipodi:nodetypes="ccccccccc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       ry="1.4981471"
-       rx="1.4981471"
-       y="1.9545606"
-       x="28.614576"
-       height="6.9623013"
-       width="2.9962943"
-       id="rect4784"
-       style="fill:#555753;fill-opacity:1;stroke:url(#linearGradient4792);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       transform="matrix(0,1,1,0,0,0)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0081301"
-       inkscape:original="M -103.46875 -287.5 C -104.58751 -287.5 -105.5 -286.58751 -105.5 -285.46875 L -105.5 -279.53125 C -105.5 -278.41249 -104.58751 -277.5 -103.46875 -277.5 L -102.53125 -277.5 C -101.41249 -277.5 -100.5 -278.41249 -100.5 -279.53125 L -100.5 -285.46875 C -100.5 -286.58751 -101.41249 -287.5 -102.53125 -287.5 L -103.46875 -287.5 z "
-       style="opacity:0.6081081;fill:none;stroke:url(#linearGradient4977);stroke-width:2.1435864;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       id="path4967"
-       d="m -103.46875,-286.5 c -0.57059,0 -1.03125,0.46066 -1.03125,1.03125 l 0,5.9375 c 0,0.57059 0.46066,1.03125 1.03125,1.03125 l 0.9375,0 c 0.57059,0 1.03125,-0.46066 1.03125,-1.03125 l 0,-5.9375 c 0,-0.57059 -0.46066,-1.03125 -1.03125,-1.03125 l -0.9375,0 z"
-       transform="matrix(0,0.35041293,0.62106611,0,180.86297,66.235476)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       transform="matrix(0,1,1,0,0,0)"
-       style="fill:url(#linearGradient5632);fill-opacity:1;stroke:none"
-       id="rect5572"
-       width="1.99455"
-       height="5.9798374"
-       x="29.110865"
-       y="2.4541459"
-       rx="0.99727499"
-       ry="0.99727499"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient5758);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       d="m -4.7126309,12.654361 c -1.8622525,0 -3.3612598,1.30267 -3.3612598,2.921028 l 0,5.131543 c 0,1.618351 1.4990073,2.921029 3.3612598,2.921029 l 1.5803872,0.0017 0.01985,-10.983712 c -1.1943624,0.02977 -0.4950442,0.0084 -1.6002373,0.0084 l 0,-6.9e-5 1e-7,8.1e-5 z"
-       id="path5707"
-       sodipodi:nodetypes="ccccccccc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient5719-5);fill-opacity:1;stroke:none"
-       id="rect5709"
-       width="1.9106927"
-       height="10.99095"
-       x="-5.5105519"
-       y="12.139328"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient3623);fill-opacity:1;stroke:none"
-       id="rect5711"
-       width="2.0266206"
-       height="11.968007"
-       x="-3.5911674"
-       y="12.157709"
-       rx="1.0133103"
-       ry="1.0133103"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       sodipodi:nodetypes="cccccccc"
-       id="path5713"
-       d="m -5.238356,13.125441 c -1.2499833,0 -2.2561527,1.137149 -2.2561527,2.549866 l 0,4.479482 c 0,1.41271 1.0061694,2.549858 2.2561527,2.549858 l 1.6478054,-0.02288 0,-9.556232 c -0.8016761,0.02597 -0.9059746,0 -1.6478054,0 l 0,-9.6e-5 z"
-       style="opacity:0.5;fill:url(#radialGradient5721-4);fill-opacity:1;stroke:none"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient5723-8);fill-opacity:1;stroke:none"
-       id="rect5715"
-       width="1.9859439"
-       height="7.995038"
-       x="6.5732913"
-       y="14.12711"
-       rx="0.99742299"
-       ry="0.99742305"
-       transform="scale(-1,1)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       sodipodi:type="arc"
-       style="fill:#dee1e3;fill-opacity:1;stroke:none"
-       id="path5859"
-       sodipodi:cx="-244.01906"
-       sodipodi:cy="-24.045986"
-       sodipodi:rx="0.83739835"
-       sodipodi:ry="1.3739837"
-       d="m -243.18166,-24.045986 a 0.83739835,1.3739837 0 1 1 -1.6748,0 0.83739835,1.3739837 0 1 1 1.6748,0 z"
-       transform="matrix(0.8690986,0,0,0.73826906,214.78423,47.887046)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient4984);fill-opacity:1;stroke:none"
-       id="rect5811-4"
-       width="1.0533623"
-       height="2.3305926"
-       x="30.146362"
-       y="-3.4252403"
-       rx="0.50398123"
-       ry="0.50398123"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       y="-0.79568303"
-       x="-9.7751017"
-       height="32.938541"
-       width="32.938541"
-       id="rect5863"
-       style="fill:#ffffff;fill-opacity:0;stroke:none"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
-    <path
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       sodipodi:nodetypes="ccccccccc"
-       id="path2878"
-       d="m 17.586784,12.654361 c 1.862252,0 3.36126,1.30267 3.36126,2.921028 l 0,5.131543 c 0,1.618351 -1.499008,2.921029 -3.36126,2.921029 l -1.580387,0.0017 -0.01985,-10.983712 c 1.194362,0.02977 0.495044,0.0084 1.600237,0.0084 l 0,-6.9e-5 0,8.1e-5 z"
-       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient2944);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220" />
-    <rect
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       y="12.139328"
-       x="-18.384705"
-       height="10.99095"
-       width="1.9106927"
-       id="rect2880"
-       style="fill:url(#linearGradient2892-5);fill-opacity:1;stroke:none"
-       transform="scale(-1,1)" />
-    <rect
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       ry="1.0133103"
-       rx="1.0133103"
-       y="12.157709"
-       x="-16.465319"
-       height="11.968007"
-       width="2.0266206"
-       id="rect2882"
-       style="fill:url(#linearGradient2894-1);fill-opacity:1;stroke:none"
-       transform="scale(-1,1)" />
-    <path
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       style="opacity:0.5;fill:url(#radialGradient2896-0);fill-opacity:1;stroke:none"
-       d="m 18.112509,13.125441 c 1.249983,0 2.256153,1.137149 2.256153,2.549866 l 0,4.479482 c 0,1.41271 -1.00617,2.549858 -2.256153,2.549858 l -1.647805,-0.02288 0,-9.556232 c 0.801676,0.02597 0.905974,0 1.647805,0 l 0,-9.6e-5 z"
-       id="path2884"
-       sodipodi:nodetypes="cccccccc" />
-    <rect
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       ry="0.99742305"
-       rx="0.99742299"
-       y="14.12711"
-       x="19.447443"
-       height="7.995038"
-       width="1.9859439"
-       id="rect2886"
-       style="fill:url(#linearGradient2898-1);fill-opacity:1;stroke:none" />
-    <rect
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       ry="0.50398123"
-       rx="0.50398123"
-       y="11.170098"
-       x="-19.396423"
-       height="3.9994802"
-       width="0.93696725"
-       id="rect2888"
-       style="fill:url(#linearGradient2900-3);fill-opacity:1;stroke:none"
-       transform="scale(-1,1)" />
-    <rect
-       transform="scale(-1,1)"
-       style="fill:url(#linearGradient3017);fill-opacity:1;stroke:none"
-       id="rect3015"
-       width="0.93696725"
-       height="3.9994802"
-       x="5.5535235"
-       y="11.170098"
-       rx="0.50398123"
-       ry="0.50398123"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-  </g>
-</svg>
Binary file pidgin/pixmaps/toolbar/32/voice-call.png has changed
Binary file pidgin/pixmaps/toolbar/48/audio-call.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/pixmaps/toolbar/48/scalable/audio-call.svg	Mon Aug 24 17:20:46 2009 +0900
@@ -0,0 +1,756 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   id="svg3879"
+   sodipodi:version="0.32"
+   inkscape:version="0.46+devel r20974"
+   version="1.0"
+   sodipodi:docname="voice.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3881">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3617">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3619" />
+      <stop
+         style="stop-color:#0b0c0d;stop-opacity:1"
+         offset="1"
+         id="stop3621" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective96" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4555"
+       id="linearGradient4563"
+       gradientUnits="userSpaceOnUse"
+       x1="-257.51324"
+       y1="-50.301723"
+       x2="-257.49792"
+       y2="-51.439991"
+       gradientTransform="matrix(0.96773657,0,0,1.1033764,283.17944,75.227551)" />
+    <linearGradient
+       id="linearGradient4555"
+       inkscape:collect="always">
+      <stop
+         id="stop4557"
+         offset="0"
+         style="stop-color:#545652;stop-opacity:1;" />
+      <stop
+         id="stop4559"
+         offset="1"
+         style="stop-color:#80837d;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(70.143605,-254.44307)"
+       inkscape:collect="always"
+       xlink:href="#linearGradient4976"
+       id="linearGradient4984"
+       x1="-24.687374"
+       y1="245.84587"
+       x2="-24.687374"
+       y2="247.61009"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4976">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4978" />
+      <stop
+         style="stop-color:#808080;stop-opacity:1"
+         offset="1"
+         id="stop4980" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4555"
+       id="linearGradient4553"
+       x1="-257.51324"
+       y1="-50.301723"
+       x2="-257.49792"
+       y2="-51.439991"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(254.47694,70.270976)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5677-7"
+       id="linearGradient5723-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.110704,-300.45156,160.82553)"
+       x1="305.89481"
+       y1="-120.46718"
+       x2="306.04715"
+       y2="-120.46718" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5677-7">
+      <stop
+         style="stop-color:#ff2de7;stop-opacity:1"
+         offset="0"
+         id="stop5679-1" />
+      <stop
+         style="stop-color:#7b009b;stop-opacity:1"
+         offset="1"
+         id="stop5681-4" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043-9-6-1"
+       id="radialGradient5721-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.93663395,1.7844755,-2.1045445,1.0450496,29.790687,695.97821)"
+       cx="-306.03387"
+       cy="-120.8595"
+       fx="-306.03387"
+       fy="-120.8595"
+       r="3.03685" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5043-9-6-1">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5045-4-8-8" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5047-1-2-6" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5655-9"
+       id="linearGradient5719-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0739995,0,0,1.2558918,322.6417,178.48569)"
+       x1="-300.82822"
+       y1="-126.31032"
+       x2="-300.82822"
+       y2="-114.83224" />
+    <linearGradient
+       id="linearGradient5655-9"
+       inkscape:collect="always">
+      <stop
+         id="stop5657-5"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1" />
+      <stop
+         id="stop5659-1"
+         offset="1"
+         style="stop-color:#707e83;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       y2="-36.569096"
+       x2="-219.25159"
+       y1="-43.842201"
+       x1="-219.25159"
+       gradientTransform="matrix(-1.1341053,0,0,1.0684624,-250.41566,72.38903)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5758"
+       xlink:href="#linearGradient5853"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5853"
+       inkscape:collect="always">
+      <stop
+         id="stop5855"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         id="stop5857"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5626"
+       id="linearGradient5632"
+       x1="-25.743168"
+       y1="-243.09763"
+       x2="-23.90864"
+       y2="-240.62437"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.4970962,69.91678,375.11023)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5626">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop5628" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:0;"
+         offset="1"
+         id="stop5630" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4971"
+       id="linearGradient4977"
+       x1="-105.74262"
+       y1="-282.20282"
+       x2="-102.94624"
+       y2="-282.20282"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4971">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4973" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4975" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4786"
+       id="linearGradient4792"
+       x1="-106.91152"
+       y1="280.91522"
+       x2="-101.28181"
+       y2="282.32028"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.81265471,0,0,1,129.18772,-269.64677)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4786">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop4788" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop4790" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5677"
+       id="linearGradient5449-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.110704,-269.59835,161.01943)"
+       x1="305.89481"
+       y1="-120.46718"
+       x2="306.04715"
+       y2="-120.46718" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5677">
+      <stop
+         style="stop-color:#ff2de7;stop-opacity:1"
+         offset="0"
+         id="stop5679" />
+      <stop
+         style="stop-color:#7b009b;stop-opacity:1"
+         offset="1"
+         id="stop5681" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043-9-6"
+       id="radialGradient5447-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.93663395,1.7844755,2.1045445,1.0450496,1.0625172,696.17212)"
+       cx="-306.03387"
+       cy="-120.8595"
+       fx="-306.03387"
+       fy="-120.8595"
+       r="3.03685" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5043-9-6">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5045-4-8" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5047-1-2" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5655"
+       id="linearGradient5443-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0930233,0,0,1.2470295,297.52685,177.58046)"
+       x1="-300.82822"
+       y1="-126.31032"
+       x2="-300.82822"
+       y2="-114.83224" />
+    <linearGradient
+       id="linearGradient5655"
+       inkscape:collect="always">
+      <stop
+         id="stop5657"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1" />
+      <stop
+         id="stop5659"
+         offset="1"
+         style="stop-color:#707e83;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5661"
+       id="linearGradient5667"
+       x1="-219.25159"
+       y1="-43.842201"
+       x2="-219.25159"
+       y2="-36.569096"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1341053,0,0,1.0632786,281.26887,72.326317)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5661">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop5663" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop5665" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5206"
+       id="linearGradient5212"
+       x1="-304.49771"
+       y1="-142.89493"
+       x2="-262.4259"
+       y2="-143.92334"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5206">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop5208" />
+      <stop
+         style="stop-color:#dededd;stop-opacity:0;"
+         offset="1"
+         id="stop5210" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5388"
+       id="linearGradient5394"
+       x1="-283.80222"
+       y1="-143.74782"
+       x2="-283.80222"
+       y2="-141.12897"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(299.49582,147.12151)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5388">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop5390" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop5392" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5376"
+       id="radialGradient5382"
+       cx="-284.44626"
+       cy="-153.18155"
+       fx="-284.44626"
+       fy="-153.18155"
+       r="17.449057"
+       gradientTransform="matrix(0.7493289,0.0071443,-0.00739936,0.77608101,227.05992,124.25584)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5376">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop5378" />
+      <stop
+         style="stop-color:#434542;stop-opacity:1"
+         offset="1"
+         id="stop5380" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3617"
+       id="linearGradient3623"
+       x1="1.421198"
+       y1="19.01931"
+       x2="1.421198"
+       y2="34.927505"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3617"
+       id="linearGradient3627"
+       gradientUnits="userSpaceOnUse"
+       x1="1.421198"
+       y1="19.01931"
+       x2="1.421198"
+       y2="34.927505"
+       gradientTransform="translate(27.998451,0)" />
+    <inkscape:perspective
+       id="perspective3637"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3617-8"
+       id="linearGradient3627-1"
+       gradientUnits="userSpaceOnUse"
+       x1="1.421198"
+       y1="19.01931"
+       x2="1.421198"
+       y2="34.927505"
+       gradientTransform="translate(27.998451,0)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3617-8">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3619-2" />
+      <stop
+         style="stop-color:#0b0c0d;stop-opacity:1"
+         offset="1"
+         id="stop3621-4" />
+    </linearGradient>
+    <linearGradient
+       y2="34.927505"
+       x2="1.421198"
+       y1="19.01931"
+       x1="1.421198"
+       gradientTransform="translate(27.998451,2.9924335e-7)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3646"
+       xlink:href="#linearGradient3617-8"
+       inkscape:collect="always" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="275.47836"
+     inkscape:cy="12.04013"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:window-width="1280"
+     inkscape:window-height="752"
+     inkscape:window-x="0"
+     inkscape:window-y="0" />
+  <metadata
+     id="metadata3884">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     transform="translate(8.5714283,-0.14285715)">
+    <rect
+       style="fill:#cc0000;fill-opacity:0;stroke:none"
+       id="rect5861"
+       width="48"
+       height="48"
+       x="-8.5714283"
+       y="0.14285715"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
+    <path
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       d="m 8.7956674,3.2221118 c -6.82455,0 -12.3542402,5.47976 -12.3542402,12.2812502 l 0,6.40625 c 0,0.71914 0.0695,1.40908 0.18813,2.09375 l 1.0034,0 c -0.12713,-0.67917 -0.18814,-1.37616 -0.18814,-2.09375 l 0,-6.40625 c 0,-6.2647902 5.0648202,-11.2812502 11.3508502,-11.2812502 l 13.2912696,0 c 6.28603,0 11.35085,5.01646 11.35085,11.2812502 l 0,6.40625 c 0,0.71759 -0.061,1.41458 -0.18814,2.09375 l 1.00339,0 c 0.11864,-0.68467 0.18814,-1.37461 0.18814,-2.09375 l 0,-6.40625 c 0,-6.8014902 -5.52969,-12.2812502 -12.35424,-12.2812502 l -13.2912696,0 z"
+       id="rect5549"
+       sodipodi:nodetypes="ccccccccccccccccc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="fill:url(#radialGradient5382);fill-opacity:1;stroke:none"
+       d="m -1.5394328,9.4030418 c -0.34234,-0.23492 -0.47813,-0.54724 -0.45029,-1.03563 0.0286,-0.50183 0.14055,-0.65306 1.09192003,-1.4752 4.64793017,-4.01662 13.37392977,-5.87446 21.59445977,-4.59766 3.75498,0.58323 7.28842,1.86204 9.74819,3.52803 1.32365,0.89651 2.31811,1.86267 2.4306,2.36144 0.15327,0.67962 -0.31249,1.36291 -0.92947,1.36354 -0.20344,2.2e-4 -0.38709,-0.0843 -0.80622,-0.37099 -4.58901,-3.1391 -11.82576,-4.34498 -18.9107,-3.67751 -4.8043396,0.4526 -9.0149896,1.45025 -12.27576977,3.58044 -0.80479,0.52575 -1.10366003,0.59052 -1.49272003,0.32354 l 0,0 z"
+       id="path5202"
+       sodipodi:nodetypes="cssssssssscc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:url(#linearGradient5394);fill-opacity:1;stroke:none;stroke-width:1.36950052;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       d="m 14.152067,1.1469218 c -1.25586,0.0451 -2.50746,0.15463 -3.71875,0.32324 -4.8155596,0.67034 -9.1494998,2.303 -11.9374998,4.78399 -0.0171,0.0152 -0.0455,0.017 -0.0625,0.0323 a 0.50262213,0.52231753 0 0 0 -0.0625,0.0969 c -0.83386,0.60798 -1.11293,1.78508 -0.59375,2.71524 0.51041,0.9144502 1.58283003,1.2501502 2.50000003,0.84042 0.0165,-0.007 0.0462,0.008 0.0625,0 a 0.4997817,0.5193658 0 0 0 0.125,-0.0646 c 0.008,-0.004 0.0233,0.005 0.0312,0 0.0189,-0.0126 0.0435,-0.0198 0.0625,-0.0323 0.0117,-0.007 0.0195,-0.0246 0.0312,-0.0323 6.35026017,-4.18918 18.36829977,-4.99194 26.59374977,-1.68086 1.15168,0.46359 2.18766,0.97193 3.09375,1.55156 a 0.50097,0.51819158 0 0 0 0.0312,0.0323 c 0.0119,0.007 0.0194,0.0246 0.0312,0.0323 a 0.50097,0.51819158 0 0 0 0.0937,0.0969 c 0.95145,0.5682002 2.20068,0.2407102 2.75,-0.74345 0.46922,-0.84064 0.27778,-1.87694 -0.375,-2.5213 a 0.50262213,0.52231753 0 0 0 -0.0312,-0.0647 c -0.006,-0.005 -0.0251,0.005 -0.0312,0 a 0.50262213,0.52231753 0 0 0 -0.0312,-0.0323 c -0.0275,-0.0237 -0.0336,-0.0747 -0.0625,-0.0969 a 0.50262213,0.52231753 0 0 0 0,-0.0323 c -1.77629,-1.631 -4.30344,-2.93446 -7.34375,-3.84658 -2.3514,-0.70544 -4.84998,-1.13016 -7.375,-1.29297 -1.26251,-0.0814 -2.52539,-0.10973 -3.78125,-0.0646 z m 1.875,1.03438 c 3.0708,0.0463 6.16037,0.47336 9,1.32529 l 0.0312,0 c 2.76259,0.83245 5.04679,2.04432 6.65625,3.42637 a 0.50005001,0.51723997 0 0 0 0.21875,0.22627 c 0.48342,0.28869 0.6541,0.92223 0.375,1.42227 -0.23724,0.42504 -0.72255,0.61655 -1.15625,0.48486 a 0.49889166,0.51844088 0 0 0 -0.15625,-0.0969 c -1.02284,-0.68188 -2.16864,-1.28682 -3.46875,-1.81017 -4.30756,-1.73396 -9.49646,-2.39535 -14.46875,-2.06875 -4.8872196,0.32102 -9.5421896,1.6205 -12.90624977,3.81426 -0.008,0.005 -0.0237,-0.005 -0.0312,0 a 0.50097251,0.51819418 0 0 0 -0.0625,0.0323 0.50097251,0.51819418 0 0 0 -0.0625,0.0323 c -0.0119,0.008 -0.0194,0.0244 -0.0312,0.0323 -0.47706,0.25937 -1.07163003,0.0673 -1.34375003,-0.42021 -0.26792,-0.48002 -0.12657,-1.08748 0.3125,-1.38995 a 0.50262213,0.52231753 0 0 0 0.0625,-0.0323 0.50005001,0.51723997 0 0 0 0.18750003,-0.16162 c 2.56214017,-2.25136 6.72203017,-3.84535 11.37499977,-4.49307 1.76729,-0.24602 3.62627,-0.35108 5.46875,-0.32324 z"
+       id="path5194"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       sodipodi:type="arc"
+       style="fill:none;stroke:url(#linearGradient5212);stroke-width:0.96893835;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       id="path5204"
+       sodipodi:cx="-285.49203"
+       sodipodi:cy="-135.7495"
+       sodipodi:rx="18.775068"
+       sodipodi:ry="9.3875341"
+       d="m -300.83968,-141.15673 c 5.97266,-4.23814 17.68585,-5.25293 26.16212,-2.26659 1.7838,0.62846 3.33482,1.4076 4.58342,2.30242"
+       transform="matrix(-1.0296667,0,0,1.0344536,-278.49445,154.74398)"
+       sodipodi:start="3.7554218"
+       sodipodi:end="5.6740176"
+       sodipodi:open="true"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+       d="m -3.5925728,33.735378 0,0.0312 c 0,6.80149 5.4797602,12.28125 12.2812502,12.28125 l 9.2499996,0 0,-1 -9.2499996,0 c -6.26479,0 -11.2812502,-5.01646 -11.2812502,-11.28125 l 0,-0.0312 -1,0 z"
+       id="rect5551"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       sodipodi:nodetypes="cccccccc"
+       id="path5431"
+       d="m 33.003467,19.691354 c 2.15778,0 3.89467,1.77306 3.89467,3.975801 l 0,6.984518 c 0,2.20273 -1.73689,3.9758 -3.89467,3.9758 l -3.07307,0.04092 -0.0268,-14.992278 c 1.3839,0.04051 1.81932,0.01533 3.0999,0.01533 l 0,-9.2e-5 z"
+       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient5667);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       y="19.212761"
+       x="-32.432659"
+       height="14.883246"
+       width="2.0379403"
+       id="rect5433"
+       style="fill:url(#linearGradient5443-6);fill-opacity:1;stroke:none"
+       transform="scale(-1,1)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="opacity:0.5;fill:url(#radialGradient5447-5);fill-opacity:1;stroke:none"
+       d="m 32.779907,20.143134 c 1.82155,0 3.2878,1.657121 3.2878,3.715816 l 0,6.527768 c 0,2.058685 -1.46625,3.715805 -3.2878,3.715805 l -2.40128,-0.03334 0,-13.925911 c 1.16825,0.03784 1.32024,0 2.40128,0 l 0,-1.39e-4 z"
+       id="path5437"
+       sodipodi:nodetypes="cccccccc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       ry="0.99742299"
+       rx="0.99742299"
+       y="22.267445"
+       x="35.395443"
+       height="9.8971453"
+       width="1.994846"
+       id="rect5439"
+       style="fill:url(#linearGradient5449-8);fill-opacity:1;stroke:none"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       ry="2.0194242"
+       rx="2.0194242"
+       y="7.854322"
+       x="43.456417"
+       height="9.9894991"
+       width="4.0564089"
+       id="rect4784"
+       style="fill:#555753;fill-opacity:1;stroke:url(#linearGradient4792);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       transform="matrix(0,1,1,0,0,0)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       sodipodi:type="inkscape:offset"
+       inkscape:radius="-1.0081301"
+       inkscape:original="M -103.46875 -287.5 C -104.58751 -287.5 -105.5 -286.58751 -105.5 -285.46875 L -105.5 -279.53125 C -105.5 -278.41249 -104.58751 -277.5 -103.46875 -277.5 L -102.53125 -277.5 C -101.41249 -277.5 -100.5 -278.41249 -100.5 -279.53125 L -100.5 -285.46875 C -100.5 -286.58751 -101.41249 -287.5 -102.53125 -287.5 L -103.46875 -287.5 z "
+       style="opacity:0.6081081;fill:none;stroke:url(#linearGradient4977);stroke-width:1.22016776;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       id="path4967"
+       d="m -103.46875,-286.5 c -0.57059,0 -1.03125,0.46066 -1.03125,1.03125 l 0,5.9375 c 0,0.57059 0.46066,1.03125 1.03125,1.03125 l 0.9375,0 c 0.57059,0 1.03125,-0.46066 1.03125,-1.03125 l 0,-5.9375 c 0,-0.57059 -0.46066,-1.03125 -1.03125,-1.03125 l -0.9375,0 z"
+       transform="matrix(0,0.67167761,1,0,295.34493,114.69191)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       transform="matrix(0,1,1,0,0,0)"
+       style="fill:url(#linearGradient5632);fill-opacity:1;stroke:none"
+       id="rect5572"
+       width="3.0350325"
+       height="8.8761415"
+       x="43.98975"
+       y="8.3505688"
+       rx="1.5175163"
+       ry="1.5023295"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient5758);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
+       d="m -2.1502628,19.497458 c -2.15778,0 -3.89467,1.781702 -3.89467,3.995182 l 0,7.01857 c 0,2.213469 1.73689,3.995183 3.89467,3.995183 l 3.05582003,0.0024 0.023,-15.022765 c -1.3839,0.04071 -1.79824,0.0115 -3.07882003,0.0115 l 0,-9.6e-5 z"
+       id="path5707"
+       sodipodi:nodetypes="cccccccc"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient5719-5);fill-opacity:1;stroke:none"
+       id="rect5709"
+       width="2.0024707"
+       height="14.989019"
+       x="-1.5749686"
+       y="18.992523"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient3623);fill-opacity:1;stroke:none"
+       id="rect5711"
+       width="1.9620597"
+       height="15.908196"
+       x="0.44016811"
+       y="19.01931"
+       rx="0.98102987"
+       ry="0.98102987"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       sodipodi:nodetypes="cccccccc"
+       id="path5713"
+       d="m -1.9267028,19.949234 c -1.82155,0 -3.2878,1.657121 -3.2878,3.715816 l 0,6.527768 c 0,2.058685 1.46625,3.715805 3.2878,3.715805 l 2.40128003,-0.03334 0,-13.925911 c -1.16825,0.03784 -1.32024,0 -2.40128003,0 l 0,-1.39e-4 z"
+       style="opacity:0.5;fill:url(#radialGradient5721-4);fill-opacity:1;stroke:none"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient5723-8);fill-opacity:1;stroke:none"
+       id="rect5715"
+       width="1.994846"
+       height="9.8971453"
+       x="4.542254"
+       y="22.073544"
+       rx="0.99742299"
+       ry="0.99742299"
+       transform="scale(-1,1)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient4553);fill-opacity:1;stroke:none"
+       id="rect5811"
+       width="1.0079625"
+       height="3.591476"
+       x="-3.557543"
+       y="18.549107"
+       rx="0.50398123"
+       ry="0.50398123"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#dee1e3;fill-opacity:1;stroke:none"
+       id="path5859"
+       sodipodi:cx="-244.01906"
+       sodipodi:cy="-24.045986"
+       sodipodi:rx="0.83739835"
+       sodipodi:ry="1.3739837"
+       d="m -243.18166,-24.045986 c 0,0.75883 -0.37492,1.373984 -0.8374,1.373984 -0.46248,0 -0.8374,-0.615154 -0.8374,-1.373984 0,-0.75883 0.37492,-1.373984 0.8374,-1.373984 0.46248,0 0.8374,0.615154 0.8374,1.373984 z"
+       transform="matrix(1.2048093,0,0,1.0941414,303.39913,71.819285)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       style="fill:url(#linearGradient4984);fill-opacity:1;stroke:none"
+       id="rect5811-4"
+       width="1.0079625"
+       height="2.3272483"
+       x="45.000946"
+       y="-9.4003887"
+       rx="0.50398123"
+       ry="0.50398123"
+       transform="matrix(0,1,-1,0,0,0)"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963" />
+    <rect
+       y="0.14285715"
+       x="-8.5714283"
+       height="48"
+       width="48"
+       id="rect5863"
+       style="fill:#ffffff;fill-opacity:0;stroke:none"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
+    <rect
+       ry="0.50398123"
+       rx="0.50398123"
+       y="18.158859"
+       x="33.470028"
+       height="3.9627495"
+       width="0.97544211"
+       id="rect4561"
+       style="fill:url(#linearGradient4563);fill-opacity:1;stroke:none"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
+    <rect
+       inkscape:export-ydpi="90.108963"
+       inkscape:export-xdpi="90.108963"
+       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
+       ry="0.98102987"
+       rx="0.98102987"
+       y="19.01931"
+       x="28.43862"
+       height="15.908196"
+       width="1.9620597"
+       id="rect3625"
+       style="fill:url(#linearGradient3646);fill-opacity:1;stroke:none" />
+  </g>
+</svg>
--- a/pidgin/pixmaps/toolbar/48/scalable/voice-call.svg	Wed Aug 19 16:19:45 2009 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,756 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="48"
-   height="48"
-   id="svg3879"
-   sodipodi:version="0.32"
-   inkscape:version="0.46+devel r20974"
-   version="1.0"
-   sodipodi:docname="voice.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs3881">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3617">
-      <stop
-         style="stop-color:#2e3436;stop-opacity:1;"
-         offset="0"
-         id="stop3619" />
-      <stop
-         style="stop-color:#0b0c0d;stop-opacity:1"
-         offset="1"
-         id="stop3621" />
-    </linearGradient>
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 24 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="48 : 24 : 1"
-       inkscape:persp3d-origin="24 : 16 : 1"
-       id="perspective96" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4555"
-       id="linearGradient4563"
-       gradientUnits="userSpaceOnUse"
-       x1="-257.51324"
-       y1="-50.301723"
-       x2="-257.49792"
-       y2="-51.439991"
-       gradientTransform="matrix(0.96773657,0,0,1.1033764,283.17944,75.227551)" />
-    <linearGradient
-       id="linearGradient4555"
-       inkscape:collect="always">
-      <stop
-         id="stop4557"
-         offset="0"
-         style="stop-color:#545652;stop-opacity:1;" />
-      <stop
-         id="stop4559"
-         offset="1"
-         style="stop-color:#80837d;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       gradientTransform="translate(70.143605,-254.44307)"
-       inkscape:collect="always"
-       xlink:href="#linearGradient4976"
-       id="linearGradient4984"
-       x1="-24.687374"
-       y1="245.84587"
-       x2="-24.687374"
-       y2="247.61009"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4976">
-      <stop
-         style="stop-color:#555753;stop-opacity:1;"
-         offset="0"
-         id="stop4978" />
-      <stop
-         style="stop-color:#808080;stop-opacity:1"
-         offset="1"
-         id="stop4980" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4555"
-       id="linearGradient4553"
-       x1="-257.51324"
-       y1="-50.301723"
-       x2="-257.49792"
-       y2="-51.439991"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(254.47694,70.270976)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5677-7"
-       id="linearGradient5723-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,1.110704,-300.45156,160.82553)"
-       x1="305.89481"
-       y1="-120.46718"
-       x2="306.04715"
-       y2="-120.46718" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5677-7">
-      <stop
-         style="stop-color:#ff2de7;stop-opacity:1"
-         offset="0"
-         id="stop5679-1" />
-      <stop
-         style="stop-color:#7b009b;stop-opacity:1"
-         offset="1"
-         id="stop5681-4" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5043-9-6-1"
-       id="radialGradient5721-4"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.93663395,1.7844755,-2.1045445,1.0450496,29.790687,695.97821)"
-       cx="-306.03387"
-       cy="-120.8595"
-       fx="-306.03387"
-       fy="-120.8595"
-       r="3.03685" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5043-9-6-1">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop5045-4-8-8" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop5047-1-2-6" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5655-9"
-       id="linearGradient5719-5"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0739995,0,0,1.2558918,322.6417,178.48569)"
-       x1="-300.82822"
-       y1="-126.31032"
-       x2="-300.82822"
-       y2="-114.83224" />
-    <linearGradient
-       id="linearGradient5655-9"
-       inkscape:collect="always">
-      <stop
-         id="stop5657-5"
-         offset="0"
-         style="stop-color:#2e3436;stop-opacity:1" />
-      <stop
-         id="stop5659-1"
-         offset="1"
-         style="stop-color:#707e83;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       y2="-36.569096"
-       x2="-219.25159"
-       y1="-43.842201"
-       x1="-219.25159"
-       gradientTransform="matrix(-1.1341053,0,0,1.0684624,-250.41566,72.38903)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient5758"
-       xlink:href="#linearGradient5853"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient5853"
-       inkscape:collect="always">
-      <stop
-         id="stop5855"
-         offset="0"
-         style="stop-color:#888a85;stop-opacity:1" />
-      <stop
-         id="stop5857"
-         offset="1"
-         style="stop-color:#555753;stop-opacity:1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5626"
-       id="linearGradient5632"
-       x1="-25.743168"
-       y1="-243.09763"
-       x2="-23.90864"
-       y2="-240.62437"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,1.4970962,69.91678,375.11023)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5626">
-      <stop
-         style="stop-color:#babdb6;stop-opacity:1;"
-         offset="0"
-         id="stop5628" />
-      <stop
-         style="stop-color:#babdb6;stop-opacity:0;"
-         offset="1"
-         id="stop5630" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4971"
-       id="linearGradient4977"
-       x1="-105.74262"
-       y1="-282.20282"
-       x2="-102.94624"
-       y2="-282.20282"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4971">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop4973" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop4975" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4786"
-       id="linearGradient4792"
-       x1="-106.91152"
-       y1="280.91522"
-       x2="-101.28181"
-       y2="282.32028"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.81265471,0,0,1,129.18772,-269.64677)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4786">
-      <stop
-         style="stop-color:#555753;stop-opacity:1"
-         offset="0"
-         id="stop4788" />
-      <stop
-         style="stop-color:#000000;stop-opacity:1"
-         offset="1"
-         id="stop4790" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5677"
-       id="linearGradient5449-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,1.110704,-269.59835,161.01943)"
-       x1="305.89481"
-       y1="-120.46718"
-       x2="306.04715"
-       y2="-120.46718" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5677">
-      <stop
-         style="stop-color:#ff2de7;stop-opacity:1"
-         offset="0"
-         id="stop5679" />
-      <stop
-         style="stop-color:#7b009b;stop-opacity:1"
-         offset="1"
-         id="stop5681" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5043-9-6"
-       id="radialGradient5447-5"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.93663395,1.7844755,2.1045445,1.0450496,1.0625172,696.17212)"
-       cx="-306.03387"
-       cy="-120.8595"
-       fx="-306.03387"
-       fy="-120.8595"
-       r="3.03685" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5043-9-6">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop5045-4-8" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop5047-1-2" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5655"
-       id="linearGradient5443-6"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0930233,0,0,1.2470295,297.52685,177.58046)"
-       x1="-300.82822"
-       y1="-126.31032"
-       x2="-300.82822"
-       y2="-114.83224" />
-    <linearGradient
-       id="linearGradient5655"
-       inkscape:collect="always">
-      <stop
-         id="stop5657"
-         offset="0"
-         style="stop-color:#2e3436;stop-opacity:1" />
-      <stop
-         id="stop5659"
-         offset="1"
-         style="stop-color:#707e83;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5661"
-       id="linearGradient5667"
-       x1="-219.25159"
-       y1="-43.842201"
-       x2="-219.25159"
-       y2="-36.569096"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.1341053,0,0,1.0632786,281.26887,72.326317)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5661">
-      <stop
-         style="stop-color:#888a85;stop-opacity:1;"
-         offset="0"
-         id="stop5663" />
-      <stop
-         style="stop-color:#555753;stop-opacity:1"
-         offset="1"
-         id="stop5665" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5206"
-       id="linearGradient5212"
-       x1="-304.49771"
-       y1="-142.89493"
-       x2="-262.4259"
-       y2="-143.92334"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5206">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0"
-         id="stop5208" />
-      <stop
-         style="stop-color:#dededd;stop-opacity:0;"
-         offset="1"
-         id="stop5210" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient5394"
-       x1="-283.80222"
-       y1="-143.74782"
-       x2="-283.80222"
-       y2="-141.12897"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(299.49582,147.12151)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5388">
-      <stop
-         style="stop-color:#555753;stop-opacity:1"
-         offset="0"
-         id="stop5390" />
-      <stop
-         style="stop-color:#000000;stop-opacity:1"
-         offset="1"
-         id="stop5392" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5376"
-       id="radialGradient5382"
-       cx="-284.44626"
-       cy="-153.18155"
-       fx="-284.44626"
-       fy="-153.18155"
-       r="17.449057"
-       gradientTransform="matrix(0.7493289,0.0071443,-0.00739936,0.77608101,227.05992,124.25584)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5376">
-      <stop
-         style="stop-color:#babdb6;stop-opacity:1"
-         offset="0"
-         id="stop5378" />
-      <stop
-         style="stop-color:#434542;stop-opacity:1"
-         offset="1"
-         id="stop5380" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3617"
-       id="linearGradient3623"
-       x1="1.421198"
-       y1="19.01931"
-       x2="1.421198"
-       y2="34.927505"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3617"
-       id="linearGradient3627"
-       gradientUnits="userSpaceOnUse"
-       x1="1.421198"
-       y1="19.01931"
-       x2="1.421198"
-       y2="34.927505"
-       gradientTransform="translate(27.998451,0)" />
-    <inkscape:perspective
-       id="perspective3637"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3617-8"
-       id="linearGradient3627-1"
-       gradientUnits="userSpaceOnUse"
-       x1="1.421198"
-       y1="19.01931"
-       x2="1.421198"
-       y2="34.927505"
-       gradientTransform="translate(27.998451,0)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3617-8">
-      <stop
-         style="stop-color:#2e3436;stop-opacity:1;"
-         offset="0"
-         id="stop3619-2" />
-      <stop
-         style="stop-color:#0b0c0d;stop-opacity:1"
-         offset="1"
-         id="stop3621-4" />
-    </linearGradient>
-    <linearGradient
-       y2="34.927505"
-       x2="1.421198"
-       y1="19.01931"
-       x1="1.421198"
-       gradientTransform="translate(27.998451,2.9924335e-7)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient3646"
-       xlink:href="#linearGradient3617-8"
-       inkscape:collect="always" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="275.47836"
-     inkscape:cy="12.04013"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1280"
-     inkscape:window-height="752"
-     inkscape:window-x="0"
-     inkscape:window-y="0" />
-  <metadata
-     id="metadata3884">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     transform="translate(8.5714283,-0.14285715)">
-    <rect
-       style="fill:#cc0000;fill-opacity:0;stroke:none"
-       id="rect5861"
-       width="48"
-       height="48"
-       x="-8.5714283"
-       y="0.14285715"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
-    <path
-       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
-       d="m 8.7956674,3.2221118 c -6.82455,0 -12.3542402,5.47976 -12.3542402,12.2812502 l 0,6.40625 c 0,0.71914 0.0695,1.40908 0.18813,2.09375 l 1.0034,0 c -0.12713,-0.67917 -0.18814,-1.37616 -0.18814,-2.09375 l 0,-6.40625 c 0,-6.2647902 5.0648202,-11.2812502 11.3508502,-11.2812502 l 13.2912696,0 c 6.28603,0 11.35085,5.01646 11.35085,11.2812502 l 0,6.40625 c 0,0.71759 -0.061,1.41458 -0.18814,2.09375 l 1.00339,0 c 0.11864,-0.68467 0.18814,-1.37461 0.18814,-2.09375 l 0,-6.40625 c 0,-6.8014902 -5.52969,-12.2812502 -12.35424,-12.2812502 l -13.2912696,0 z"
-       id="rect5549"
-       sodipodi:nodetypes="ccccccccccccccccc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="fill:url(#radialGradient5382);fill-opacity:1;stroke:none"
-       d="m -1.5394328,9.4030418 c -0.34234,-0.23492 -0.47813,-0.54724 -0.45029,-1.03563 0.0286,-0.50183 0.14055,-0.65306 1.09192003,-1.4752 4.64793017,-4.01662 13.37392977,-5.87446 21.59445977,-4.59766 3.75498,0.58323 7.28842,1.86204 9.74819,3.52803 1.32365,0.89651 2.31811,1.86267 2.4306,2.36144 0.15327,0.67962 -0.31249,1.36291 -0.92947,1.36354 -0.20344,2.2e-4 -0.38709,-0.0843 -0.80622,-0.37099 -4.58901,-3.1391 -11.82576,-4.34498 -18.9107,-3.67751 -4.8043396,0.4526 -9.0149896,1.45025 -12.27576977,3.58044 -0.80479,0.52575 -1.10366003,0.59052 -1.49272003,0.32354 l 0,0 z"
-       id="path5202"
-       sodipodi:nodetypes="cssssssssscc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:url(#linearGradient5394);fill-opacity:1;stroke:none;stroke-width:1.36950052;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
-       d="m 14.152067,1.1469218 c -1.25586,0.0451 -2.50746,0.15463 -3.71875,0.32324 -4.8155596,0.67034 -9.1494998,2.303 -11.9374998,4.78399 -0.0171,0.0152 -0.0455,0.017 -0.0625,0.0323 a 0.50262213,0.52231753 0 0 0 -0.0625,0.0969 c -0.83386,0.60798 -1.11293,1.78508 -0.59375,2.71524 0.51041,0.9144502 1.58283003,1.2501502 2.50000003,0.84042 0.0165,-0.007 0.0462,0.008 0.0625,0 a 0.4997817,0.5193658 0 0 0 0.125,-0.0646 c 0.008,-0.004 0.0233,0.005 0.0312,0 0.0189,-0.0126 0.0435,-0.0198 0.0625,-0.0323 0.0117,-0.007 0.0195,-0.0246 0.0312,-0.0323 6.35026017,-4.18918 18.36829977,-4.99194 26.59374977,-1.68086 1.15168,0.46359 2.18766,0.97193 3.09375,1.55156 a 0.50097,0.51819158 0 0 0 0.0312,0.0323 c 0.0119,0.007 0.0194,0.0246 0.0312,0.0323 a 0.50097,0.51819158 0 0 0 0.0937,0.0969 c 0.95145,0.5682002 2.20068,0.2407102 2.75,-0.74345 0.46922,-0.84064 0.27778,-1.87694 -0.375,-2.5213 a 0.50262213,0.52231753 0 0 0 -0.0312,-0.0647 c -0.006,-0.005 -0.0251,0.005 -0.0312,0 a 0.50262213,0.52231753 0 0 0 -0.0312,-0.0323 c -0.0275,-0.0237 -0.0336,-0.0747 -0.0625,-0.0969 a 0.50262213,0.52231753 0 0 0 0,-0.0323 c -1.77629,-1.631 -4.30344,-2.93446 -7.34375,-3.84658 -2.3514,-0.70544 -4.84998,-1.13016 -7.375,-1.29297 -1.26251,-0.0814 -2.52539,-0.10973 -3.78125,-0.0646 z m 1.875,1.03438 c 3.0708,0.0463 6.16037,0.47336 9,1.32529 l 0.0312,0 c 2.76259,0.83245 5.04679,2.04432 6.65625,3.42637 a 0.50005001,0.51723997 0 0 0 0.21875,0.22627 c 0.48342,0.28869 0.6541,0.92223 0.375,1.42227 -0.23724,0.42504 -0.72255,0.61655 -1.15625,0.48486 a 0.49889166,0.51844088 0 0 0 -0.15625,-0.0969 c -1.02284,-0.68188 -2.16864,-1.28682 -3.46875,-1.81017 -4.30756,-1.73396 -9.49646,-2.39535 -14.46875,-2.06875 -4.8872196,0.32102 -9.5421896,1.6205 -12.90624977,3.81426 -0.008,0.005 -0.0237,-0.005 -0.0312,0 a 0.50097251,0.51819418 0 0 0 -0.0625,0.0323 0.50097251,0.51819418 0 0 0 -0.0625,0.0323 c -0.0119,0.008 -0.0194,0.0244 -0.0312,0.0323 -0.47706,0.25937 -1.07163003,0.0673 -1.34375003,-0.42021 -0.26792,-0.48002 -0.12657,-1.08748 0.3125,-1.38995 a 0.50262213,0.52231753 0 0 0 0.0625,-0.0323 0.50005001,0.51723997 0 0 0 0.18750003,-0.16162 c 2.56214017,-2.25136 6.72203017,-3.84535 11.37499977,-4.49307 1.76729,-0.24602 3.62627,-0.35108 5.46875,-0.32324 z"
-       id="path5194"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       sodipodi:type="arc"
-       style="fill:none;stroke:url(#linearGradient5212);stroke-width:0.96893835;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       id="path5204"
-       sodipodi:cx="-285.49203"
-       sodipodi:cy="-135.7495"
-       sodipodi:rx="18.775068"
-       sodipodi:ry="9.3875341"
-       d="m -300.83968,-141.15673 c 5.97266,-4.23814 17.68585,-5.25293 26.16212,-2.26659 1.7838,0.62846 3.33482,1.4076 4.58342,2.30242"
-       transform="matrix(-1.0296667,0,0,1.0344536,-278.49445,154.74398)"
-       sodipodi:start="3.7554218"
-       sodipodi:end="5.6740176"
-       sodipodi:open="true"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
-       d="m -3.5925728,33.735378 0,0.0312 c 0,6.80149 5.4797602,12.28125 12.2812502,12.28125 l 9.2499996,0 0,-1 -9.2499996,0 c -6.26479,0 -11.2812502,-5.01646 -11.2812502,-11.28125 l 0,-0.0312 -1,0 z"
-       id="rect5551"
-       sodipodi:nodetypes="ccccccccc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       sodipodi:nodetypes="cccccccc"
-       id="path5431"
-       d="m 33.003467,19.691354 c 2.15778,0 3.89467,1.77306 3.89467,3.975801 l 0,6.984518 c 0,2.20273 -1.73689,3.9758 -3.89467,3.9758 l -3.07307,0.04092 -0.0268,-14.992278 c 1.3839,0.04051 1.81932,0.01533 3.0999,0.01533 l 0,-9.2e-5 z"
-       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient5667);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       y="19.212761"
-       x="-32.432659"
-       height="14.883246"
-       width="2.0379403"
-       id="rect5433"
-       style="fill:url(#linearGradient5443-6);fill-opacity:1;stroke:none"
-       transform="scale(-1,1)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="opacity:0.5;fill:url(#radialGradient5447-5);fill-opacity:1;stroke:none"
-       d="m 32.779907,20.143134 c 1.82155,0 3.2878,1.657121 3.2878,3.715816 l 0,6.527768 c 0,2.058685 -1.46625,3.715805 -3.2878,3.715805 l -2.40128,-0.03334 0,-13.925911 c 1.16825,0.03784 1.32024,0 2.40128,0 l 0,-1.39e-4 z"
-       id="path5437"
-       sodipodi:nodetypes="cccccccc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       ry="0.99742299"
-       rx="0.99742299"
-       y="22.267445"
-       x="35.395443"
-       height="9.8971453"
-       width="1.994846"
-       id="rect5439"
-       style="fill:url(#linearGradient5449-8);fill-opacity:1;stroke:none"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       ry="2.0194242"
-       rx="2.0194242"
-       y="7.854322"
-       x="43.456417"
-       height="9.9894991"
-       width="4.0564089"
-       id="rect4784"
-       style="fill:#555753;fill-opacity:1;stroke:url(#linearGradient4792);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       transform="matrix(0,1,1,0,0,0)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0081301"
-       inkscape:original="M -103.46875 -287.5 C -104.58751 -287.5 -105.5 -286.58751 -105.5 -285.46875 L -105.5 -279.53125 C -105.5 -278.41249 -104.58751 -277.5 -103.46875 -277.5 L -102.53125 -277.5 C -101.41249 -277.5 -100.5 -278.41249 -100.5 -279.53125 L -100.5 -285.46875 C -100.5 -286.58751 -101.41249 -287.5 -102.53125 -287.5 L -103.46875 -287.5 z "
-       style="opacity:0.6081081;fill:none;stroke:url(#linearGradient4977);stroke-width:1.22016776;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       id="path4967"
-       d="m -103.46875,-286.5 c -0.57059,0 -1.03125,0.46066 -1.03125,1.03125 l 0,5.9375 c 0,0.57059 0.46066,1.03125 1.03125,1.03125 l 0.9375,0 c 0.57059,0 1.03125,-0.46066 1.03125,-1.03125 l 0,-5.9375 c 0,-0.57059 -0.46066,-1.03125 -1.03125,-1.03125 l -0.9375,0 z"
-       transform="matrix(0,0.67167761,1,0,295.34493,114.69191)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       transform="matrix(0,1,1,0,0,0)"
-       style="fill:url(#linearGradient5632);fill-opacity:1;stroke:none"
-       id="rect5572"
-       width="3.0350325"
-       height="8.8761415"
-       x="43.98975"
-       y="8.3505688"
-       rx="1.5175163"
-       ry="1.5023295"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       style="fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient5758);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:220"
-       d="m -2.1502628,19.497458 c -2.15778,0 -3.89467,1.781702 -3.89467,3.995182 l 0,7.01857 c 0,2.213469 1.73689,3.995183 3.89467,3.995183 l 3.05582003,0.0024 0.023,-15.022765 c -1.3839,0.04071 -1.79824,0.0115 -3.07882003,0.0115 l 0,-9.6e-5 z"
-       id="path5707"
-       sodipodi:nodetypes="cccccccc"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient5719-5);fill-opacity:1;stroke:none"
-       id="rect5709"
-       width="2.0024707"
-       height="14.989019"
-       x="-1.5749686"
-       y="18.992523"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient3623);fill-opacity:1;stroke:none"
-       id="rect5711"
-       width="1.9620597"
-       height="15.908196"
-       x="0.44016811"
-       y="19.01931"
-       rx="0.98102987"
-       ry="0.98102987"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       sodipodi:nodetypes="cccccccc"
-       id="path5713"
-       d="m -1.9267028,19.949234 c -1.82155,0 -3.2878,1.657121 -3.2878,3.715816 l 0,6.527768 c 0,2.058685 1.46625,3.715805 3.2878,3.715805 l 2.40128003,-0.03334 0,-13.925911 c -1.16825,0.03784 -1.32024,0 -2.40128003,0 l 0,-1.39e-4 z"
-       style="opacity:0.5;fill:url(#radialGradient5721-4);fill-opacity:1;stroke:none"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient5723-8);fill-opacity:1;stroke:none"
-       id="rect5715"
-       width="1.994846"
-       height="9.8971453"
-       x="4.542254"
-       y="22.073544"
-       rx="0.99742299"
-       ry="0.99742299"
-       transform="scale(-1,1)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient4553);fill-opacity:1;stroke:none"
-       id="rect5811"
-       width="1.0079625"
-       height="3.591476"
-       x="-3.557543"
-       y="18.549107"
-       rx="0.50398123"
-       ry="0.50398123"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <path
-       sodipodi:type="arc"
-       style="fill:#dee1e3;fill-opacity:1;stroke:none"
-       id="path5859"
-       sodipodi:cx="-244.01906"
-       sodipodi:cy="-24.045986"
-       sodipodi:rx="0.83739835"
-       sodipodi:ry="1.3739837"
-       d="m -243.18166,-24.045986 c 0,0.75883 -0.37492,1.373984 -0.8374,1.373984 -0.46248,0 -0.8374,-0.615154 -0.8374,-1.373984 0,-0.75883 0.37492,-1.373984 0.8374,-1.373984 0.46248,0 0.8374,0.615154 0.8374,1.373984 z"
-       transform="matrix(1.2048093,0,0,1.0941414,303.39913,71.819285)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       style="fill:url(#linearGradient4984);fill-opacity:1;stroke:none"
-       id="rect5811-4"
-       width="1.0079625"
-       height="2.3272483"
-       x="45.000946"
-       y="-9.4003887"
-       rx="0.50398123"
-       ry="0.50398123"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963" />
-    <rect
-       y="0.14285715"
-       x="-8.5714283"
-       height="48"
-       width="48"
-       id="rect5863"
-       style="fill:#ffffff;fill-opacity:0;stroke:none"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
-    <rect
-       ry="0.50398123"
-       rx="0.50398123"
-       y="18.158859"
-       x="33.470028"
-       height="3.9627495"
-       width="0.97544211"
-       id="rect4561"
-       style="fill:url(#linearGradient4563);fill-opacity:1;stroke:none"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png" />
-    <rect
-       inkscape:export-ydpi="90.108963"
-       inkscape:export-xdpi="90.108963"
-       inkscape:export-filename="/home/hbons/Desktop/Pidgin VV/voice.png"
-       ry="0.98102987"
-       rx="0.98102987"
-       y="19.01931"
-       x="28.43862"
-       height="15.908196"
-       width="1.9620597"
-       id="rect3625"
-       style="fill:url(#linearGradient3646);fill-opacity:1;stroke:none" />
-  </g>
-</svg>
Binary file pidgin/pixmaps/toolbar/48/voice-call.png has changed
--- a/pidgin/plugins/Makefile.am	Wed Aug 19 16:19:45 2009 +0900
+++ b/pidgin/plugins/Makefile.am	Mon Aug 24 17:20:46 2009 +0900
@@ -47,6 +47,7 @@
 themeedit_la_LDFLAGS        = -module -avoid-version
 timestamp_la_LDFLAGS        = -module -avoid-version
 timestamp_format_la_LDFLAGS = -module -avoid-version
+vvconfig_la_LDFLAGS         = -module -avoid-version
 xmppconsole_la_LDFLAGS      = -module -avoid-version
 
 if PLUGINS
@@ -68,6 +69,10 @@
 	timestamp_format.la \
 	xmppconsole.la
 
+if USE_VV
+plugin_LTLIBRARIES +=	vvconfig.la
+endif
+
 noinst_LTLIBRARIES = \
 	contact_priority.la \
 	gtk_signals_test.la
@@ -88,6 +93,7 @@
 themeedit_la_SOURCES        = themeedit.c themeedit-icon.c themeedit-icon.h
 timestamp_la_SOURCES        = timestamp.c
 timestamp_format_la_SOURCES = timestamp_format.c
+vvconfig_SOURCES            = vvconfig.c
 xmppconsole_la_SOURCES      = xmppconsole.c
 
 convcolors_la_LIBADD        = $(GTK_LIBS)
@@ -106,6 +112,7 @@
 themeedit_la_LIBADD         = $(GTK_LIBS)
 timestamp_la_LIBADD         = $(GTK_LIBS)
 timestamp_format_la_LIBADD  = $(GTK_LIBS)
+vvconfig_la_LIBADD          = $(GTK_LIBS) $(GSTREAMER_LIBS)
 xmppconsole_la_LIBADD       = $(GTK_LIBS)
 
 endif # PLUGINS
@@ -129,6 +136,7 @@
 	-I$(top_srcdir)/pidgin \
 	$(DEBUG_CFLAGS) \
 	$(GTK_CFLAGS) \
+	$(GSTREAMER_CFLAGS) \
 	$(PLUGIN_CFLAGS)
 
 #
--- a/pidgin/plugins/disco/gtkdisco.c	Wed Aug 19 16:19:45 2009 +0900
+++ b/pidgin/plugins/disco/gtkdisco.c	Mon Aug 24 17:20:46 2009 +0900
@@ -224,6 +224,8 @@
 		/* This shouldn't ever happen since the account is connected */
 		server = g_strdup("jabber.org");
 
+	/* Note to translators: The string "Enter an XMPP Server" is asking the
+	   user to type the name of an XMPP server which will then be queried */
 	purple_request_input(my_plugin, _("Server name request"), _("Enter an XMPP Server"),
 			_("Select an XMPP server to query"),
 			server, FALSE, FALSE, NULL,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/plugins/vvconfig.c	Mon Aug 24 17:20:46 2009 +0900
@@ -0,0 +1,566 @@
+/*
+ * Configures microphones and webcams for voice and video
+ * Copyright (C) 2009 Mike Ruprecht <cmaiku@gmail.com>
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+#include "internal.h"
+
+#include "debug.h"
+#include "mediamanager.h"
+#include "media-gst.h"
+#include "version.h"
+#include "gtkplugin.h"
+#include "gtkutils.h"
+#include "gtkprefs.h"
+
+#include <gst/interfaces/propertyprobe.h>
+
+static PurpleMediaElementInfo *old_video_src = NULL, *old_video_sink = NULL,
+		*old_audio_src = NULL, *old_audio_sink = NULL;
+
+static const gchar *AUDIO_SRC_PLUGINS[] = {
+	"alsasrc",	"ALSA",
+	/* "esdmon",	"ESD", ? */
+	"osssrc",	"OSS",
+	"pulsesrc",	"PulseAudio",
+	/* "audiotestsrc wave=silence", "Silence", */
+	"audiotestsrc",	"Test Sound",
+	NULL
+};
+
+static const gchar *AUDIO_SINK_PLUGINS[] = {
+	"alsasink",	"ALSA",
+	"artsdsink",	"aRts",
+	"esdsink",	"ESD",
+	"osssink",	"OSS",
+	"pulsesink",	"PulseAudio",
+	NULL
+};
+
+static const gchar *VIDEO_SRC_PLUGINS[] = {
+	"videotestsrc",	"Test Input",
+	"dshowvideosrc","DirectDraw",
+	"ksvideosrc",	"KS Video",
+	"qcamsrc",	"Quickcam",
+	"v4lsrc",	"Video4Linux",
+	"v4l2src",	"Video4Linux2",
+	"v4lmjpegsrc",	"Video4Linux MJPEG",
+	NULL
+};
+
+static const gchar *VIDEO_SINK_PLUGINS[] = {
+	/* "aasink",	"AALib", Didn't work for me */
+	"directdrawsink","DirectDraw",
+	"glimagesink",	"OpenGL",
+	"ximagesink",	"X Window System",
+	"xvimagesink",	"X Window System (Xv)",
+	NULL
+};
+
+static GList *
+get_element_devices(const gchar *element_name)
+{
+	GList *ret = NULL;
+	GstElement *element;
+	GObjectClass *klass;
+	GstPropertyProbe *probe;
+	const GParamSpec *pspec;
+
+	if (!strcmp(element_name, "<custom>")) {
+		ret = g_list_prepend(ret, NULL);
+		ret = g_list_prepend(ret, (gpointer)_("Default"));
+		ret = g_list_prepend(ret, "");
+		return ret;
+	}
+
+	ret = g_list_prepend(ret, (gpointer)_("Default"));
+	ret = g_list_prepend(ret, "");
+
+	if (*element_name == '\0') {
+		ret = g_list_prepend(ret, NULL);
+		ret = g_list_reverse(ret);
+		return ret;
+	}
+
+	element = gst_element_factory_make(element_name, "test");
+	klass = G_OBJECT_GET_CLASS (element);
+	if (!g_object_class_find_property(klass, "device") ||
+			!GST_IS_PROPERTY_PROBE(element) ||
+			!(probe = GST_PROPERTY_PROBE(element)) ||
+			!(pspec = gst_property_probe_get_property(probe, "device"))) {
+		purple_debug_info("vvconfig", "'%s' - no device\n", element_name);
+	} else {
+		gint n;
+		GValueArray *array;
+
+		/* Set autoprobe[-fps] to FALSE to avoid delays when probing. */
+		if (g_object_class_find_property (klass, "autoprobe")) {
+			g_object_set (G_OBJECT (element), "autoprobe", FALSE, NULL);
+			if (g_object_class_find_property (klass, "autoprobe-fps")) {
+				g_object_set (G_OBJECT (element), "autoprobe-fps", FALSE, NULL);
+			}
+		}
+
+		array = gst_property_probe_probe_and_get_values (probe, pspec);
+		if (array == NULL) {
+			purple_debug_info("vvconfig", "'%s' has no devices\n", element_name);
+			ret = g_list_prepend(ret, NULL);
+			ret = g_list_reverse(ret);
+			return ret;
+		}
+			
+		for (n=0; n < array->n_values; ++n) {
+			GValue *device;
+			const gchar *name;
+			const gchar *device_name;
+
+			device = g_value_array_get_nth(array, n);
+			g_object_set_property(G_OBJECT(element), "device", device);
+			if (gst_element_set_state(element, GST_STATE_READY)
+					!= GST_STATE_CHANGE_SUCCESS) {
+				purple_debug_warning("vvconfig",
+						"Error changing state of %s\n",
+						element_name);
+				continue;
+			}
+
+			g_object_get(G_OBJECT(element), "device-name", &name, NULL);
+			device_name = g_value_get_string(device);
+			if (name == NULL)
+				name = _("Unknown");
+			purple_debug_info("vvconfig", "Found device %s : %s for %s\n",
+					device_name, name, element_name);
+			ret = g_list_prepend(ret, (gpointer)name);
+			ret = g_list_prepend(ret, (gpointer)device_name);
+			gst_element_set_state(element, GST_STATE_NULL);
+		}
+	}
+	gst_object_unref(element);
+	
+	ret = g_list_prepend(ret, NULL);
+	ret = g_list_reverse(ret);
+
+	return ret;
+}
+
+static GList *
+get_element_plugins(const gchar **plugins)
+{
+	GList *ret = NULL;
+
+	ret = g_list_prepend(ret, "Default");
+	ret = g_list_prepend(ret, "");
+	for (; plugins[0] && plugins[1]; plugins += 2) {
+		if (gst_default_registry_check_feature_version(
+				plugins[0], 0, 0, 0)) {
+			ret = g_list_prepend(ret, (gpointer)plugins[1]);
+			ret = g_list_prepend(ret, (gpointer)plugins[0]);
+		}
+	}
+	ret = g_list_prepend(ret, NULL);
+	ret = g_list_reverse(ret);
+	return ret;
+}
+
+static void
+device_changed_cb(const gchar *name, PurplePrefType type,
+		gconstpointer value, gpointer data)
+{
+	GtkSizeGroup *sg = data;
+	GtkWidget *parent, *widget;
+	GSList *widgets;
+	GList *devices;
+	GValue gvalue;
+	gint position;
+	gchar *label, *pref;
+
+	widgets = gtk_size_group_get_widgets(GTK_SIZE_GROUP(sg));
+	for (; widgets; widgets = g_slist_next(widgets)) {
+		const gchar *widget_name =
+				gtk_widget_get_name(GTK_WIDGET(widgets->data));
+		if (!strcmp(widget_name, name)) {
+			gchar *temp_str;
+			gchar delimiters[3] = {0, 0, 0};
+			const gchar *text;
+			gint keyval, pos;
+
+			widget = widgets->data;
+			/* Get label with _ from the GtkLabel */
+			text = gtk_label_get_text(GTK_LABEL(widget));
+			keyval = gtk_label_get_mnemonic_keyval(GTK_LABEL(widget));
+			delimiters[0] = g_ascii_tolower(keyval);
+			delimiters[1] = g_ascii_toupper(keyval);
+			pos = strcspn(text, delimiters);
+			if (pos != -1) {
+				temp_str = g_strndup(text, pos);
+				label = g_strconcat(temp_str, "_",
+						text + pos, NULL);
+				g_free(temp_str);
+			} else {
+				label = g_strdup(text);
+			}
+			break;
+		}
+	}
+
+	if (widgets == NULL)
+		return;
+
+	parent = gtk_widget_get_parent(widget);
+	widget = parent;
+	parent = gtk_widget_get_parent(GTK_WIDGET(widget));
+	gvalue.g_type = 0;
+	g_value_init(&gvalue, G_TYPE_INT);
+	gtk_container_child_get_property(GTK_CONTAINER(parent),
+			GTK_WIDGET(widget), "position", &gvalue);
+	position = g_value_get_int(&gvalue);
+	g_value_unset(&gvalue);
+	gtk_widget_destroy(widget);
+
+	pref = g_strdup(name);
+	strcpy(pref + strlen(pref) - strlen("plugin"), "device");
+	devices = get_element_devices(value);
+	if (g_list_find(devices, purple_prefs_get_string(pref)) == NULL)
+		purple_prefs_set_string(pref, g_list_next(devices)->data);
+	widget = pidgin_prefs_dropdown_from_list(parent,
+			label, PURPLE_PREF_STRING,
+			pref, devices);
+	g_list_free(devices);
+	g_signal_connect_swapped(widget, "destroy",
+			G_CALLBACK(g_free), pref);
+	g_free(label);
+	gtk_misc_set_alignment(GTK_MISC(widget), 0, 0.5);
+	gtk_widget_set_name(widget, name);
+	gtk_size_group_add_widget(sg, widget);
+	gtk_box_reorder_child(GTK_BOX(parent),
+			gtk_widget_get_parent(GTK_WIDGET(widget)), position);
+}
+
+static void
+get_plugin_frame(GtkWidget *parent, GtkSizeGroup *sg,
+		const gchar *name, const gchar *plugin_label,
+		const gchar **plugin_strs, const gchar *plugin_pref,
+		const gchar *device_label, const gchar *device_pref)
+{
+	GtkWidget *vbox, *widget;
+	GList *plugins, *devices;
+
+	vbox = pidgin_make_frame(parent, name);
+
+	/* Setup plugin preference */
+	plugins = get_element_plugins(plugin_strs);
+	widget = pidgin_prefs_dropdown_from_list(vbox, plugin_label,
+			PURPLE_PREF_STRING, plugin_pref, plugins);
+	g_list_free(plugins);
+	gtk_size_group_add_widget(sg, widget);
+	gtk_misc_set_alignment(GTK_MISC(widget), 0, 0.5);
+
+	/* Setup device preference */
+	devices = get_element_devices(purple_prefs_get_string(plugin_pref));
+	if (g_list_find(devices, purple_prefs_get_string(device_pref)) == NULL)
+		purple_prefs_set_string(device_pref, g_list_next(devices)->data);
+	widget = pidgin_prefs_dropdown_from_list(vbox, device_label,
+			PURPLE_PREF_STRING, device_pref, devices);
+	g_list_free(devices);
+	gtk_widget_set_name(widget, plugin_pref);
+	gtk_size_group_add_widget(sg, widget);
+	gtk_misc_set_alignment(GTK_MISC(widget), 0, 0.5);
+
+	purple_prefs_connect_callback(vbox, plugin_pref,
+			device_changed_cb, sg);
+	g_signal_connect_swapped(vbox, "destroy",
+			G_CALLBACK(purple_prefs_disconnect_by_handle), vbox);
+}
+
+static GtkWidget *
+get_plugin_config_frame(PurplePlugin *plugin) {
+	GtkWidget *notebook, *vbox_audio, *vbox_video;
+	GtkSizeGroup *sg;
+
+	notebook = gtk_notebook_new();
+	gtk_container_set_border_width(GTK_CONTAINER(notebook),
+			PIDGIN_HIG_BORDER);
+	gtk_widget_show(notebook);
+
+	vbox_audio = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+	vbox_video = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+	gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
+			vbox_audio, gtk_label_new(_("Audio")));
+	gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
+			vbox_video, gtk_label_new(_("Video")));
+	gtk_container_set_border_width(GTK_CONTAINER (vbox_audio),
+			PIDGIN_HIG_BORDER);
+	gtk_container_set_border_width(GTK_CONTAINER (vbox_video),
+			PIDGIN_HIG_BORDER);
+
+	gtk_widget_show(vbox_audio);
+	gtk_widget_show(vbox_video);
+
+	sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+
+	get_plugin_frame(vbox_audio, sg, _("Output"), _("_Plugin"), AUDIO_SINK_PLUGINS,
+			"/plugins/core/vvconfig/audio/sink/plugin", _("_Device"),
+			"/plugins/core/vvconfig/audio/sink/device");
+	get_plugin_frame(vbox_audio, sg, _("Input"), _("P_lugin"), AUDIO_SRC_PLUGINS,
+			"/plugins/core/vvconfig/audio/src/plugin", _("D_evice"),
+			"/plugins/core/vvconfig/audio/src/device");
+
+	get_plugin_frame(vbox_video, sg, _("Output"), _("_Plugin"), VIDEO_SINK_PLUGINS,
+			"/plugins/gtk/vvconfig/video/sink/plugin", _("_Device"),
+			"/plugins/gtk/vvconfig/video/sink/device");
+	get_plugin_frame(vbox_video, sg, _("Input"), _("P_lugin"), VIDEO_SRC_PLUGINS,
+			"/plugins/core/vvconfig/video/src/plugin", _("D_evice"),
+			"/plugins/core/vvconfig/video/src/device");
+
+	return notebook;
+}
+
+static GstElement *
+create_video_src(PurpleMedia *media,
+		const gchar *session_id, const gchar *participant)
+{
+	const gchar *plugin = purple_prefs_get_string(
+			"/plugins/core/vvconfig/video/src/plugin");
+	const gchar *device = purple_prefs_get_string(
+			"/plugins/core/vvconfig/video/src/device");
+	GstElement *ret;
+
+	if (plugin[0] == '\0')
+		return purple_media_element_info_call_create(old_video_src,
+				media, session_id, participant);
+
+	ret = gst_element_factory_make(plugin, "vvconfig-videosrc");
+	if (device[0] != '\0')
+		g_object_set(G_OBJECT(ret), "device", device, NULL);
+	if (!strcmp(plugin, "videotestsrc"))
+		g_object_set(G_OBJECT(ret), "is-live", 1, NULL);
+	return ret;
+}
+
+static GstElement *
+create_video_sink(PurpleMedia *media,
+		const gchar *session_id, const gchar *participant)
+{
+	const gchar *plugin = purple_prefs_get_string(
+			"/plugins/gtk/vvconfig/video/sink/plugin");
+	const gchar *device = purple_prefs_get_string(
+			"/plugins/gtk/vvconfig/video/sink/device");
+	GstElement *ret;
+
+	if (plugin[0] == '\0')
+		return purple_media_element_info_call_create(old_video_sink,
+				media, session_id, participant);
+
+	ret = gst_element_factory_make(plugin, NULL);
+	if (device[0] != '\0')
+		g_object_set(G_OBJECT(ret), "device", device, NULL);
+	return ret;
+}
+
+static GstElement *
+create_audio_src(PurpleMedia *media,
+		const gchar *session_id, const gchar *participant)
+{
+	const gchar *plugin = purple_prefs_get_string(
+			"/plugins/core/vvconfig/audio/src/plugin");
+	const gchar *device = purple_prefs_get_string(
+			"/plugins/core/vvconfig/audio/src/device");
+	GstElement *ret;
+
+	if (plugin[0] == '\0')
+		return purple_media_element_info_call_create(old_audio_src,
+				media, session_id, participant);
+
+	ret = gst_element_factory_make(plugin, NULL);
+	if (device[0] != '\0')
+		g_object_set(G_OBJECT(ret), "device", device, NULL);
+	return ret;
+}
+
+static GstElement *
+create_audio_sink(PurpleMedia *media,
+		const gchar *session_id, const gchar *participant)
+{
+	const gchar *plugin = purple_prefs_get_string(
+			"/plugins/core/vvconfig/audio/sink/plugin");
+	const gchar *device = purple_prefs_get_string(
+			"/plugins/core/vvconfig/audio/sink/device");
+	GstElement *ret;
+
+	if (plugin[0] == '\0')
+		return purple_media_element_info_call_create(old_audio_sink,
+				media, session_id, participant);
+
+	ret = gst_element_factory_make(plugin, NULL);
+	if (device[0] != '\0')
+		g_object_set(G_OBJECT(ret), "device", device, NULL);
+	return ret;
+}
+
+static void
+set_element_info_cond(PurpleMediaElementInfo *old_info,
+		PurpleMediaElementInfo *new_info, const gchar *id)
+{
+	gchar *element_id = purple_media_element_info_get_id(old_info);
+	if (!strcmp(element_id, id))
+		purple_media_manager_set_active_element(
+				purple_media_manager_get(), new_info);
+	g_free(element_id);
+}
+
+static gboolean
+plugin_load(PurplePlugin *plugin)
+{
+	PurpleMediaManager *manager;
+	PurpleMediaElementInfo *video_src, *video_sink,
+			*audio_src, *audio_sink;
+
+	/* Disable the plugin if the UI doesn't support VV */
+	if (purple_media_manager_get_ui_caps(purple_media_manager_get()) ==
+			PURPLE_MEDIA_CAPS_NONE)
+		return FALSE;
+
+	purple_prefs_add_none("/plugins/core/vvconfig");
+	purple_prefs_add_none("/plugins/core/vvconfig/audio");
+	purple_prefs_add_none("/plugins/core/vvconfig/audio/src");
+	purple_prefs_add_string("/plugins/core/vvconfig/audio/src/plugin", "");
+	purple_prefs_add_string("/plugins/core/vvconfig/audio/src/device", "");
+	purple_prefs_add_none("/plugins/core/vvconfig/audio/sink");
+	purple_prefs_add_string("/plugins/core/vvconfig/audio/sink/plugin", "");
+	purple_prefs_add_string("/plugins/core/vvconfig/audio/sink/device", "");
+	purple_prefs_add_none("/plugins/core/vvconfig/video");
+	purple_prefs_add_none("/plugins/core/vvconfig/video/src");
+	purple_prefs_add_string("/plugins/core/vvconfig/video/src/plugin", "");
+	purple_prefs_add_string("/plugins/core/vvconfig/video/src/device", "");
+	purple_prefs_add_none("/plugins/gtk/vvconfig");
+	purple_prefs_add_none("/plugins/gtk/vvconfig/video");
+	purple_prefs_add_none("/plugins/gtk/vvconfig/video/sink");
+	purple_prefs_add_string("/plugins/gtk/vvconfig/video/sink/plugin", "");
+	purple_prefs_add_string("/plugins/gtk/vvconfig/video/sink/device", "");
+
+	video_src = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
+			"id", "vvconfig-videosrc",
+			"name", "VV Conf Plugin Video Source",
+			"type", PURPLE_MEDIA_ELEMENT_VIDEO
+					| PURPLE_MEDIA_ELEMENT_SRC
+					| PURPLE_MEDIA_ELEMENT_ONE_SRC
+					| PURPLE_MEDIA_ELEMENT_UNIQUE,
+			"create-cb", create_video_src, NULL);
+	video_sink = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
+			"id", "vvconfig-videosink",
+			"name", "VV Conf Plugin Video Sink",
+			"type", PURPLE_MEDIA_ELEMENT_VIDEO
+					| PURPLE_MEDIA_ELEMENT_SINK
+					| PURPLE_MEDIA_ELEMENT_ONE_SINK,
+			"create-cb", create_video_sink, NULL);
+	audio_src = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
+			"id", "vvconfig-audiosrc",
+			"name", "VV Conf Plugin Audio Source",
+			"type", PURPLE_MEDIA_ELEMENT_AUDIO
+					| PURPLE_MEDIA_ELEMENT_SRC
+					| PURPLE_MEDIA_ELEMENT_ONE_SRC
+					| PURPLE_MEDIA_ELEMENT_UNIQUE,
+			"create-cb", create_audio_src, NULL);
+	audio_sink = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
+			"id", "vvconfig-audiosink",
+			"name", "VV Conf Plugin Audio Sink",
+			"type", PURPLE_MEDIA_ELEMENT_AUDIO
+					| PURPLE_MEDIA_ELEMENT_SINK
+					| PURPLE_MEDIA_ELEMENT_ONE_SINK,
+			"create-cb", create_audio_sink, NULL);
+
+	purple_debug_info("gtkmedia", "Registering media element types\n");
+	manager = purple_media_manager_get();
+
+	old_video_src = purple_media_manager_get_active_element(manager,
+			PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SRC);
+	old_video_sink = purple_media_manager_get_active_element(manager,
+			PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SINK);
+	old_audio_src = purple_media_manager_get_active_element(manager,
+			PURPLE_MEDIA_ELEMENT_AUDIO | PURPLE_MEDIA_ELEMENT_SRC);
+	old_audio_sink = purple_media_manager_get_active_element(manager,
+			PURPLE_MEDIA_ELEMENT_AUDIO | PURPLE_MEDIA_ELEMENT_SINK);
+
+	set_element_info_cond(old_video_src, video_src, "pidgindefaultvideosrc");
+	set_element_info_cond(old_video_sink, video_sink, "pidgindefaultvideosink");
+	set_element_info_cond(old_audio_src, audio_src, "pidgindefaultaudiosrc");
+	set_element_info_cond(old_audio_sink, audio_sink, "pidgindefaultaudiosink");
+
+	return TRUE;
+}
+
+static gboolean
+plugin_unload(PurplePlugin *plugin)
+{
+	PurpleMediaManager *manager = purple_media_manager_get();
+	purple_media_manager_set_active_element(manager, old_video_src);
+	purple_media_manager_set_active_element(manager, old_video_sink);
+	purple_media_manager_set_active_element(manager, old_audio_src);
+	purple_media_manager_set_active_element(manager, old_audio_sink);
+	return TRUE;
+}
+
+static PidginPluginUiInfo ui_info = {
+	get_plugin_config_frame,
+	0,   /* page_num (Reserved) */
+	/* Padding */
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+static PurplePluginInfo info =
+{
+	PURPLE_PLUGIN_MAGIC,			/**< magic		*/
+	PURPLE_MAJOR_VERSION,			/**< major version	*/
+	PURPLE_MINOR_VERSION,			/**< minor version	*/
+	PURPLE_PLUGIN_STANDARD,			/**< type		*/
+	PIDGIN_PLUGIN_TYPE,			/**< ui_requirement	*/
+	0,					/**< flags		*/
+	NULL,					/**< dependencies	*/
+	PURPLE_PRIORITY_DEFAULT,		/**< priority		*/
+
+	"gtk-maiku-vvconfig",			/**< id			*/
+	N_("Voice/Video Settings"),		/**< name		*/
+	DISPLAY_VERSION,			/**< version		*/
+	N_("Configure your microphone and webcam."), /**< summary	*/
+	N_("Configure microphone and webcam "
+	   "settings for voice/video calls."),	/**< description	*/
+	"Mike Ruprecht <cmaiku@gmail.com>",	/**< author		*/
+	PURPLE_WEBSITE,				/**< homepage		*/
+
+	plugin_load,				/**< load		*/
+	plugin_unload,				/**< unload		*/
+	NULL,					/**< destroy		*/
+
+	&ui_info,				/**< ui_info		*/
+	NULL,					/**< extra_info		*/
+	NULL,					/**< prefs_info		*/
+	NULL,					/**< actions		*/
+
+	/* padding */
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+static void
+init_plugin(PurplePlugin *plugin) {
+}
+
+PURPLE_INIT_PLUGIN(vvconfig, init_plugin, info)
--- a/po/ChangeLog	Wed Aug 19 16:19:45 2009 +0900
+++ b/po/ChangeLog	Mon Aug 24 17:20:46 2009 +0900
@@ -1,5 +1,8 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
+version 2.6.1
+	* No changes
+
 version 2.6.0
 	* Afrikaans translation updated (Friedel Wolff)
 	* Armenian translation added (David Avsharyan)
--- a/po/POTFILES.in	Wed Aug 19 16:19:45 2009 +0900
+++ b/po/POTFILES.in	Mon Aug 24 17:20:46 2009 +0900
@@ -35,9 +35,9 @@
 finch/plugins/gntclipboard.c
 finch/plugins/gntgf.c
 finch/plugins/gnthistory.c
+finch/plugins/gnttinyurl.c
 finch/plugins/grouping.c
 finch/plugins/lastlog.c
-finch/plugins/gnttinyurl.c
 libpurple/account.c
 libpurple/blist.c
 libpurple/certificate.c
@@ -198,8 +198,8 @@
 pidgin.desktop.in
 pidgin/eggtrayicon.c
 pidgin/gtkaccount.c
+pidgin/gtkblist-theme.c
 pidgin/gtkblist.c
-pidgin/gtkblist-theme.c
 pidgin/gtkcellview.c
 pidgin/gtkcertmgr.c
 pidgin/gtkconn.c
@@ -235,10 +235,10 @@
 pidgin/pixmaps/emotes/none/none.theme.in
 pidgin/pixmaps/emotes/small/16/small.theme.in
 pidgin/plugins/cap/cap.c
+pidgin/plugins/contact_priority.c
+pidgin/plugins/convcolors.c
 pidgin/plugins/disco/gtkdisco.c
 pidgin/plugins/disco/xmppdisco.c
-pidgin/plugins/contact_priority.c
-pidgin/plugins/convcolors.c
 pidgin/plugins/extplacement.c
 pidgin/plugins/gestures/gestures.c
 pidgin/plugins/gevolution/add_buddy_dialog.c
--- a/po/hu.po	Wed Aug 19 16:19:45 2009 +0900
+++ b/po/hu.po	Mon Aug 24 17:20:46 2009 +0900
@@ -10,10 +10,10 @@
 msgstr ""
 "Project-Id-Version: pidgin 2.5\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-14 20:04+0200\n"
-"PO-Revision-Date: 2009-08-14 19:58+0200\n"
+"POT-Creation-Date: 2009-08-21 17:54+0200\n"
+"PO-Revision-Date: 2009-08-21 17:54+0200\n"
 "Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
-"Language-Team: Hungarian <gnome at gnome dot hu>\n"
+"Language-Team: Hungarian <gnome at fsf dot hu>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -869,7 +869,7 @@
 msgid "System Log"
 msgstr "Rendszernapló"
 
-msgid "Calling ... "
+msgid "Calling..."
 msgstr "Hívás…"
 
 msgid "Hangup"
@@ -1508,6 +1508,31 @@
 "Ez a bővítmény új társalgás megnyitásakor beszúrja az utolsó társalgást az "
 "aktuális társalgásba."
 
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+"\n"
+"TinyURL lekérése…"
+
+msgid "Only create TinyURL for URLs of this length or greater"
+msgstr "TinyURL készítése csak a legalább ilyen hosszú URL-címekhez"
+
+msgid "TinyURL (or other) address prefix"
+msgstr "TinyURL (vagy más) címelőtag"
+
+msgid "TinyURL"
+msgstr "TinyURL"
+
+msgid "TinyURL plugin"
+msgstr "TinyURL bővítmény"
+
+msgid "When receiving a message with URL(s), use TinyURL for easier copying"
+msgstr ""
+"URL-címeket tartalmazó üzenet fogadásakor TinyURL használata a másolás "
+"megkönnyítéséhez"
+
 msgid "Online"
 msgstr "Elérhető"
 
@@ -1551,31 +1576,6 @@
 msgid "Lastlog plugin."
 msgstr "Lastlog bővítmény."
 
-#, c-format
-msgid ""
-"\n"
-"Fetching TinyURL..."
-msgstr ""
-"\n"
-"TinyURL lekérése…"
-
-msgid "Only create TinyURL for urls of this length or greater"
-msgstr "TinyURL készítése csak a legalább ilyen hosszú URL-címekhez"
-
-msgid "TinyURL (or other) address prefix"
-msgstr "TinyURL (vagy más) címelőtag"
-
-msgid "TinyURL"
-msgstr "TinyURL"
-
-msgid "TinyURL plugin"
-msgstr "TinyURL bővítmény"
-
-msgid "When receiving a message with URL(s), TinyURL for easier copying"
-msgstr ""
-"URL-címeket tartalmazó üzenetek fogadásakor URL-rövidítés a másolás "
-"megkönnyítéséhez"
-
 msgid "accounts"
 msgstr "fiókok"
 
@@ -1728,7 +1728,6 @@
 "A(z) „%s” által bemutatott tanúsítvány saját aláírású. Nem ellenőrizhető "
 "automatikusan."
 
-#. FIXME 2.6.1
 #, c-format
 msgid "The certificate chain presented for %s is not valid."
 msgstr "A következőhöz bemutatott tanúsítványlánc nem érvényes: %s."
@@ -1751,6 +1750,18 @@
 msgid "Invalid certificate authority signature"
 msgstr "A hitelesítésszolgáltató aláírása érvénytelen"
 
+#, c-format
+msgid "Failed to validate expiration time for %s"
+msgstr "Nem sikerült ellenőrizni a következő lejárati idejét: %s"
+
+#, c-format
+msgid "The certificate for %s is expired."
+msgstr "%s tanúsítványa lejárt."
+
+#, c-format
+msgid "The certificate for %s should not yet be in use."
+msgstr "A következő tanúsítványát még nem lenne szabad használni: %s."
+
 #. Make messages
 #, c-format
 msgid ""
@@ -1787,7 +1798,6 @@
 msgstr "+++ %s kilépett"
 
 #. Unknown error
-#, c-format
 msgid "Unknown error"
 msgstr "Ismeretlen hiba"
 
@@ -1987,18 +1997,18 @@
 msgstr "A fájlátvitel befejeződött"
 
 #, c-format
-msgid "You canceled the transfer of %s"
+msgid "You cancelled the transfer of %s"
 msgstr "Megszakította %s átvitelét"
 
 msgid "File transfer cancelled"
 msgstr "Fájlátvitel megszakítva"
 
 #, c-format
-msgid "%s canceled the transfer of %s"
+msgid "%s cancelled the transfer of %s"
 msgstr "%s megszakította %s átvitelét"
 
 #, c-format
-msgid "%s canceled the file transfer"
+msgid "%s cancelled the file transfer"
 msgstr "%s megszakította a fájlátvitelt"
 
 #, c-format
@@ -2456,14 +2466,15 @@
 "Bővítmények IPC támogatásának tesztelése kiszolgálóként. Ez regisztrálja az "
 "IPC parancsokat."
 
-msgid "Join/Part Hiding Configuration"
-msgstr "Belépés/kilépés rejtésének beállítása"
-
-msgid "Minimum Room Size"
-msgstr "Szoba legkisebb mérete"
-
-msgid "User Inactivity Timeout (in minutes)"
-msgstr "Felhasználó inaktivitási időtartama (perc)"
+msgid "Hide Joins/Parts"
+msgstr "Belépés/kilépés elrejtése"
+
+#. Translators: Followed by an input request a number of people
+msgid "For rooms with more than this many people"
+msgstr "Ennél több jelenlévővel rendelkező szobákhoz:"
+
+msgid "If user has not spoken in this many minutes"
+msgstr "Ha a felhasználó nem szólalt meg ennyi percig"
 
 msgid "Apply hiding rules to buddies"
 msgstr "Elrejtési szabályok alkalmazása partnerekre"
@@ -3917,15 +3928,21 @@
 msgid "Logo"
 msgstr "Logó"
 
+#, c-format
+msgid ""
+"%s will no longer be able to see your status updates.  Do you want to "
+"continue?"
+msgstr "%s nem fogja többé látni az Ön állapotfrissítéseit. Folytatni akarja?"
+
+msgid "Cancel Presence Notification"
+msgstr "Jelenlét-értesítés törlése"
+
 msgid "Un-hide From"
 msgstr "Rejtettség visszavonása"
 
 msgid "Temporarily Hide From"
 msgstr "Ideiglenesen elrejt"
 
-msgid "Cancel Presence Notification"
-msgstr "Jelenlét-értesítés törlése"
-
 msgid "(Re-)Request authorization"
 msgstr "Engedélyezés (újra)kérése"
 
@@ -4537,11 +4554,11 @@
 
 msgid ""
 "role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the "
-"users with an role or set users' role with the room."
-msgstr ""
-"role &lt;moderator|participant|visitor|none&gt;: [1. becenév] [2. becenév]"
-"… : Adott szereppel rendelkező felhasználók lekérése vagy a felhasználók "
-"szerepének beállítása a szobával."
+"users with a role or set users' role with the room."
+msgstr ""
+"role &lt;moderator|participant|visitor|none&gt; [1. becenév] [2. becenév] …: "
+"Adott szerepű felhasználók lekérése vagy a felhasználók szerepének "
+"beállítása a szobával."
 
 msgid "invite &lt;user&gt; [message]:  Invite a user to the room."
 msgstr "invite &lt;felhasználó&gt; [üzenet]:  Felhasználó meghívása a szobába."
@@ -4961,8 +4978,7 @@
 msgid "Not expected"
 msgstr "Váratlan"
 
-#, c-format
-msgid "Friendly name changes too rapidly"
+msgid "Friendly name is changing too rapidly"
 msgstr "A felhasználónév túl gyorsan változik"
 
 #, c-format
@@ -5531,8 +5547,9 @@
 "%s meg szeretné tekinteni az Ön webkameráját, de ez még nem támogatott."
 
 #, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
-msgstr "%s webkamera-meghívást küldött, ami még nem támogatott."
+msgid "%s invited you to view his/her webcam, but this is not yet supported."
+msgstr ""
+"%s meghívta Önt a webkamerájának megnézésére, de ez még nem támogatott."
 
 msgid "Away From Computer"
 msgstr "Nem vagyok a gépnél"
@@ -5583,6 +5600,10 @@
 msgid "The username specified is invalid."
 msgstr "A megadott felhasználónév érvénytelen."
 
+#, c-format
+msgid "Friendly name changes too rapidly"
+msgstr "A felhasználónév túl gyorsan változik"
+
 msgid "This Hotmail account may not be active."
 msgstr "Lehetséges, hogy ez a Hotmail fiók nem aktív."
 
@@ -5941,18 +5962,17 @@
 msgid "Slapping %s..."
 msgstr "%s pofozása…"
 
-# fixme: hát ez ezt jelenti ;)
 #. Goose means "to pinch someone on their butt"
 msgid "Goose"
-msgstr "Seggberúgás"
+msgstr "Megcsípés"
 
 #, c-format
 msgid "%s has goosed you!"
-msgstr "%s seggberúgta!"
+msgstr "%s megcsípte!"
 
 #, c-format
 msgid "Goosing %s..."
-msgstr "%s seggberúgása…"
+msgstr "%s megcsípése…"
 
 #. A high-five is when two people's hands slap each other
 #. * in the air above their heads.  It is done to celebrate
@@ -6261,8 +6281,10 @@
 msgid "Server port"
 msgstr "Kiszolgáló portja"
 
-msgid "Received unexpected response from "
-msgstr "Váratlan válasz érkezett a következőtől: "
+#. Note to translators: %s in this string is a URL
+#, c-format
+msgid "Received unexpected response from %s"
+msgstr "Váratlan válasz érkezett innen: %s"
 
 #. username connecting too frequently
 msgid ""
@@ -6272,9 +6294,11 @@
 "Ön túl gyakran jelentkezik ki/be. Várjon tíz percet és próbálja meg újra. Ha "
 "tovább folytatja, még többet kell majd várnia."
 
-#, c-format
-msgid "Error requesting "
-msgstr "Hiba a kéréskor: "
+#. Note to translators: The first %s is a URL, the second is an
+#. error message.
+#, c-format
+msgid "Error requesting %s: %s"
+msgstr "Hiba %s lekérésekor: %s"
 
 msgid "AOL does not allow your screen name to authenticate here"
 msgstr "Az AOL nem engedélyezi ezen megjelenő név hitelesítését"
@@ -7068,6 +7092,9 @@
 msgid "C_onnect"
 msgstr "Kapcs_olódás"
 
+msgid "You closed the connection."
+msgstr "Lezárta a kapcsolatot."
+
 msgid "Get AIM Info"
 msgstr "AIM információk lekérése"
 
@@ -7078,6 +7105,9 @@
 msgid "Get Status Msg"
 msgstr "Állapotüzenet lekérése"
 
+msgid "End Direct IM Session"
+msgstr "A közvetlen kapcsolat befejezése"
+
 msgid "Direct IM"
 msgstr "Közvetlen IM"
 
@@ -7909,7 +7939,7 @@
 msgstr "Fájlküldés"
 
 #, c-format
-msgid "%d canceled the transfer of %s"
+msgid "%d cancelled the transfer of %s"
 msgstr "%d megszakította a(z) %s átvitelét"
 
 #, c-format
@@ -9484,6 +9514,10 @@
 msgid "Yahoo! JAPAN Protocol Plugin"
 msgstr "Yahoo! Japán protokollbővítmény"
 
+#, c-format
+msgid "%s has sent you a webcam invite, which is not yet supported."
+msgstr "%s webkamera-meghívást küldött, ami még nem támogatott."
+
 msgid "Your SMS was not delivered"
 msgstr "Az SMS nem lett kézbesítve"
 
@@ -9560,8 +9594,26 @@
 msgid "Ignore buddy?"
 msgstr "Mellőzi a partnert?"
 
-msgid "Your account is locked, please log in to the Yahoo! website."
-msgstr "A fiókja zárolva van, kérem jelentkezzen be a Yahoo! weboldalára."
+msgid "Invalid username or password"
+msgstr "Érvénytelen felhasználónév vagy jelszó"
+
+msgid ""
+"Your account has been locked due to too many failed login attempts.  Please "
+"try logging into the Yahoo! website."
+msgstr ""
+"A fiók zárolva, mert túl sok bejelentkezési kísérlet hiúsult meg. Próbáljon "
+"meg bejelentkezni a Yahoo! weboldalára."
+
+#, c-format
+msgid "Unknown error 52.  Reconnecting should fix this."
+msgstr "Ismeretlen hiba: 52. Próbáljon újracsatlakozni."
+
+msgid ""
+"Error 1013: The username you have entered is invalid.  The most common cause "
+"of this error is entering your e-mail address instead of your Yahoo! ID."
+msgstr ""
+"1013-as hiba: A megadott felhasználónév érvénytelen. Ennek leggyakoribb oka, "
+"hogy az e-mail címét adta meg a Yahoo! azonosítója helyett."
 
 #, c-format
 msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
@@ -10328,6 +10380,124 @@
 "segítségével visszatérhet ehhez az ablakhoz fiókok hozzáadásához, "
 "szerkesztéséhez vagy eltávolításához."
 
+#. Buddy List
+msgid "Background Color"
+msgstr "Háttérszín"
+
+msgid "The background color for the buddy list"
+msgstr "A partnerlista háttérszíne"
+
+msgid "Layout"
+msgstr "Elrendezés"
+
+msgid "The layout of icons, name, and status of the buddy list"
+msgstr "A partnerlista ikonjainak, nevének és állapotának elrendezése"
+
+#. Group
+#. Note to translators: These two strings refer to the background color
+#. of a buddy list group when in its expanded state
+msgid "Expanded Background Color"
+msgstr "Kibontott háttérszín"
+
+msgid "The background color of an expanded group"
+msgstr "Kibontott csoport háttérszíne"
+
+#. Note to translators: These two strings refer to the font and color
+#. of a buddy list group when in its expanded state
+msgid "Expanded Text"
+msgstr "Kibontott szöveg"
+
+msgid "The text information for when a group is expanded"
+msgstr "Szöveges információk kibontott csoport esetén"
+
+#. Note to translators: These two strings refer to the background color
+#. of a buddy list group when in its collapsed state
+msgid "Collapsed Background Color"
+msgstr "Összecsukott háttérszín"
+
+msgid "The background color of a collapsed group"
+msgstr "Összecsukott csoport háttérszíne"
+
+#. Note to translators: These two strings refer to the font and color
+#. of a buddy list group when in its collapsed state
+msgid "Collapsed Text"
+msgstr "Összecsukott szöveg"
+
+msgid "The text information for when a group is collapsed"
+msgstr "A szöveges információk összecsukott csoport esetén"
+
+#. Buddy
+#. Note to translators: These two strings refer to the background color
+#. of a buddy list contact or chat room
+msgid "Contact/Chat Background Color"
+msgstr "Partner/csevegés háttérszíne"
+
+msgid "The background color of a contact or chat"
+msgstr "Partner vagy csevegés háttérszíne"
+
+#. Note to translators: These two strings refer to the font and color
+#. of a buddy list contact when in its expanded state
+msgid "Contact Text"
+msgstr "Partnerszöveg"
+
+msgid "The text information for when a contact is expanded"
+msgstr "Kibontott partner szöveges információi"
+
+#. Note to translators: These two strings refer to the font and color
+#. of a buddy list buddy when it is online
+msgid "Online Text"
+msgstr "Elérhető szöveg"
+
+msgid "The text information for when a buddy is online"
+msgstr "Elérhető partner szöveges információi"
+
+#. Note to translators: These two strings refer to the font and color
+#. of a buddy list buddy when it is away
+msgid "Away Text"
+msgstr "Távol szöveg"
+
+msgid "The text information for when a buddy is away"
+msgstr "Távol lévő partner szöveges információi"
+
+#. Note to translators: These two strings refer to the font and color
+#. of a buddy list buddy when it is offline
+msgid "Offline Text"
+msgstr "Kilépett szöveg"
+
+msgid "The text information for when a buddy is offline"
+msgstr "Kilépett partner szöveges információi"
+
+#. Note to translators: These two strings refer to the font and color
+#. of a buddy list buddy when it is idle
+msgid "Idle Text"
+msgstr "Ráérő szöveg"
+
+msgid "The text information for when a buddy is idle"
+msgstr "Ráérő partner szöveges információi"
+
+#. Note to translators: These two strings refer to the font and color
+#. of a buddy list buddy when they have sent you a new message
+msgid "Message Text"
+msgstr "Üzenetszöveg"
+
+msgid "The text information for when a buddy has an unread message"
+msgstr "Olvasatlan üzenetekkel rendelkező partner szöveges információi"
+
+#. Note to translators: These two strings refer to the font and color
+#. of a buddy list buddy when they have sent you a new message
+msgid "Message (Nick Said) Text"
+msgstr "Üzenetszöveg (becenév említve)"
+
+msgid ""
+"The text information for when a chat has an unread message that mentions "
+"your nickname"
+msgstr ""
+"Szöveges információk, ha a csevegés olvasatlan üzeneteket tartalmaz, amelyek "
+"az Ön becenevét említik"
+
+msgid "The text information for a buddy's status"
+msgstr "Partner állapotának szöveges információi"
+
 #, c-format
 msgid "You have %d contact named %s. Would you like to merge them?"
 msgid_plural ""
@@ -10763,8 +10933,8 @@
 msgid "_Group:"
 msgstr "_Csoport:"
 
-msgid "Auto_join when account becomes online."
-msgstr "Automatikus _csatlakozás a fiók elérhetővé válásakor."
+msgid "Auto_join when account connects."
+msgstr "Automatikus _csatlakozás a fiók csatlakozásakor."
 
 msgid "_Remain in chat after window is closed."
 msgstr "Csevegésben mara_dás az ablak bezárásakor."
@@ -10796,100 +10966,6 @@
 msgid "/Buddies/Sort Buddies"
 msgstr "/Partnerek/Partnerek rendezése"
 
-#. Buddy List
-msgid "Background Color"
-msgstr "Háttérszín"
-
-msgid "The background color for the buddy list"
-msgstr "A partnerlista háttérszíne"
-
-msgid "Layout"
-msgstr "Elrendezés"
-
-msgid "The layout of icons, name, and status of the blist"
-msgstr "A partnerlista ikonjainak, nevének és állapotának elrendezése"
-
-#. Group
-msgid "Expanded Background Color"
-msgstr "Kibontott háttérszín"
-
-msgid "The background color of an expanded group"
-msgstr "Kibontott csoport háttérszíne"
-
-msgid "Expanded Text"
-msgstr "Kibontott szöveg"
-
-msgid "The text information for when a group is expanded"
-msgstr "Szöveges információk kibontott csoport esetén"
-
-msgid "Collapsed Background Color"
-msgstr "Összecsukott háttérszín"
-
-msgid "The background color of a collapsed group"
-msgstr "Összecsukott csoport háttérszíne"
-
-msgid "Collapsed Text"
-msgstr "Összecsukott szöveg"
-
-msgid "The text information for when a group is collapsed"
-msgstr "A szöveges információk összecsukott csoport esetén"
-
-#. Buddy
-msgid "Contact/Chat Background Color"
-msgstr "Partner/csevegés háttérszíne"
-
-msgid "The background color of a contact or chat"
-msgstr "Partner vagy csevegés háttérszíne"
-
-msgid "Contact Text"
-msgstr "Partnerszöveg"
-
-msgid "The text information for when a contact is expanded"
-msgstr "Kibontott partner szöveges információi"
-
-msgid "On-line Text"
-msgstr "Elérhető szöveg"
-
-msgid "The text information for when a buddy is online"
-msgstr "Elérhető partner szöveges információi"
-
-msgid "Away Text"
-msgstr "Távol szöveg"
-
-msgid "The text information for when a buddy is away"
-msgstr "Távol lévő partner szöveges információi"
-
-msgid "Off-line Text"
-msgstr "Kilépett szöveg"
-
-msgid "The text information for when a buddy is off-line"
-msgstr "Kilépett partner szöveges információi"
-
-msgid "Idle Text"
-msgstr "Ráérő szöveg"
-
-msgid "The text information for when a buddy is idle"
-msgstr "Ráérő partner szöveges információi"
-
-msgid "Message Text"
-msgstr "Üzenetszöveg"
-
-msgid "The text information for when a buddy has an unread message"
-msgstr "Olvasatlan üzenetekkel rendelkező partner szöveges információi"
-
-msgid "Message (Nick Said) Text"
-msgstr "Üzenetszöveg (becenév említve)"
-
-msgid ""
-"The text information for when a chat has an unread message that mentions "
-"your nick"
-msgstr ""
-"Szöveges információk, ha a csevegés olvasatlan üzeneteket tartalmaz, amelyek "
-"az Ön becenevét említik"
-
-msgid "The text information for a buddy's status"
-msgstr "Partner állapotának szöveges információi"
-
 msgid "Type the host name for this certificate."
 msgstr "Írja be a tanúsítványt birtokló gép nevét."
 
@@ -10974,6 +11050,9 @@
 msgid "/Conversation/New Instant _Message..."
 msgstr "/Társalgás/Új azonnali ü_zenet…"
 
+msgid "/Conversation/Join a _Chat..."
+msgstr "/Társalgás/Csatlakozás _csevegéshez…"
+
 msgid "/Conversation/_Find..."
 msgstr "/Társalgás/Ker_esés…"
 
@@ -11356,7 +11435,7 @@
 msgid "Estonian"
 msgstr "észt"
 
-msgid "Euskera(Basque)"
+msgid "Basque"
 msgstr "Baszk"
 
 msgid "Persian"
@@ -11561,10 +11640,19 @@
 #, c-format
 msgid ""
 "<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
-"\">support@pidgin.im</A><BR/><BR/>"
-msgstr ""
-"<FONT SIZE=\"4\">Segítség e-mailben (angol):</FONT> <A HREF=\"mailto:"
-"support@pidgin.im\">support@pidgin.im</A><BR/><BR/>"
+"\">support@pidgin.im</A> (This is a <A HREF=\"http://pidgin.im/cgi-bin/"
+"mailman/listinfo/support\">mailing list</A>, and messages sent here are <A "
+"HREF=\"http://pidgin.im/pipermail/support/\">publicly archived!</A>  "
+"Furthermore, we do <I><B>not</B></I> support MXit, Facebook, Skype, or any "
+"other third-party plugins on this list.<BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">Segítség e-mailben:</FONT> <A HREF=\"mailto:support@pidgin."
+"im\">support@pidgin.im</A> (Ez egy angol nyelvű <A HREF=\"http://pidgin.im/"
+"cgi-bin/mailman/listinfo/support\">levelezőlista</A>, az ide küldött levelek "
+"<A HREF=\"http://pidgin.im/pipermail/support/\">nyilvánosan elérhetők "
+"lesznek!</A> Továbbá, ezen a listán <I><B>nem</B></I> támogatjuk az MXit, "
+"Facebook, Skype, vagy bármely más harmadik féltől származó bővítményt.<BR/"
+"><BR/>"
 
 #, c-format
 msgid ""
@@ -12121,65 +12209,45 @@
 
 #, c-format
 msgid ""
-"%s %s\n"
 "Usage: %s [OPTION]...\n"
 "\n"
-"  -c, --config=DIR    use DIR for config files\n"
-"  -d, --debug         print debugging messages to stdout\n"
-"  -f, --force-online  force online, regardless of network status\n"
-"  -h, --help          display this help and exit\n"
-"  -m, --multiple      do not ensure single instance\n"
-"  -n, --nologin       don't automatically login\n"
-"  -l, --login[=NAME]  enable specified account(s) (optional argument NAME\n"
-"                      specifies account(s) to use, separated by commas.\n"
-"                      Without this only the first account will be enabled).\n"
-"  --display=DISPLAY   X display to use\n"
-"  -v, --version       display the current version and exit\n"
-msgstr ""
-"%s %s\n"
+msgstr ""
 "Használat: %s [KAPCSOLÓ]…\n"
 "\n"
-"  -c, --config=KÖNYVTÁR A KÖNYVTÁR használata a beállítófájlokhoz\n"
-"  -d, --debug         hibakereső üzenetek kiírása a szabványos kimenetre\n"
-"  -f, --force-online  elérhető állapot kényszerítése, a hálózat állapotától\n"
-"                        függetlenül\n"
-"  -h, --help          ezen súgó megjelenítése és kilépés\n"
-"  -m, --multiple      ne csak egy példány futhasson\n"
-"  -n, --nologin       ne jelentkezzen be automatikusan\n"
-"  -l, --login[=NÉV]   automatikus bejelentkezés (a NÉV paraméter megadja a\n"
-"                      használandó fiókok vesszőkkel tagolt listáját)\n"
-"  --display=KÉPERNYŐ  a használandó X megjelenítő\n"
-"  -v, --version       az aktuális verzió megjelenítése és kilépés\n"
-
-#, c-format
-msgid ""
-"%s %s\n"
-"Usage: %s [OPTION]...\n"
-"\n"
-"  -c, --config=DIR    use DIR for config files\n"
-"  -d, --debug         print debugging messages to stdout\n"
-"  -f, --force-online  force online, regardless of network status\n"
-"  -h, --help          display this help and exit\n"
-"  -m, --multiple      do not ensure single instance\n"
-"  -n, --nologin       don't automatically login\n"
-"  -l, --login[=NAME]  enable specified account(s) (optional argument NAME\n"
-"                      specifies account(s) to use, separated by commas.\n"
-"                      Without this only the first account will be enabled).\n"
-"  -v, --version       display the current version and exit\n"
-msgstr ""
-"%s %s\n"
-"Használat: %s [KAPCSOLÓ]…\n"
-"\n"
-"  -c, --config=KÖNYVTÁR A KÖNYVTÁR használata a beállítófájlokhoz\n"
-"  -d, --debug         hibakereső üzenetek kiírása a szabványos kimenetre\n"
-"  -f, --force-online  elérhető állapot kényszerítése, a hálózat állapotától\n"
-"                        függetlenül\n"
-"  -h, --help          ezen súgó megjelenítése és kilépés\n"
-"  -m, --multiple      ne csak egy példány futhasson\n"
-"  -n, --nologin       ne jelentkezzen be automatikusan\n"
-"  -l, --login[=NÉV]   automatikus bejelentkezés (a NÉV paraméter megadja a\n"
-"                      használandó fiókok vesszőkkel tagolt listáját)\n"
-"  -v, --version       az aktuális verzió megjelenítése és kilépés\n"
+
+msgid "use DIR for config files"
+msgstr "a KÖNYVTÁR használata a beállítófájlokhoz"
+
+msgid "print debugging messages to stdout"
+msgstr "hibakereső üzenetek kiírása a szabványos kimenetre"
+
+msgid "force online, regardless of network status"
+msgstr "elérhető kényszerítése a hálózat állapotától függetlenül"
+
+msgid "display this help and exit"
+msgstr "ezen súgó megjelenítése és kilépés"
+
+msgid "allow multiple instances"
+msgstr "több példány engedélyezése"
+
+msgid "don't automatically login"
+msgstr "ne jelentkezzen be automatikusan"
+
+msgid ""
+"enable specified account(s) (optional argument NAME\n"
+"                      specifies account(s) to use, separated by commas."
+msgstr ""
+"automatikus bejelentkezés (a NÉV paraméter megadja a\n"
+"                      használandó fiókok vesszőkkel tagolt listáját."
+
+msgid "Without this only the first account will be enabled)."
+msgstr "Enélkül csak az első fiók lesz engedélyezve)."
+
+msgid "X display to use"
+msgstr "Használandó X-megjelenítő"
+
+msgid "display the current version and exit"
+msgstr "az aktuális verzió megjelenítése és kilépés"
 
 #, c-format
 msgid ""
@@ -12224,9 +12292,6 @@
 msgid "/Media/_Hangup"
 msgstr "/Média/_Lerakás"
 
-msgid "Calling..."
-msgstr "Hívás…"
-
 #, c-format
 msgid "%s wishes to start an audio/video session with you."
 msgstr "%s hang/videókapcsolatot szeretne indítani."
@@ -13243,66 +13308,6 @@
 msgid "Displays statistical information about your buddies' availability"
 msgstr "Statisztikai információk megjelenítése a partnerek elérhetőségéről"
 
-msgid "Server name request"
-msgstr "Kiszolgálónév-kérés"
-
-msgid "Enter an XMPP Server"
-msgstr "Adjon meg egy XMPP kiszolgálót"
-
-msgid "Select an XMPP server to query"
-msgstr "Válassza ki a lekérdezendő XMPP kiszolgálót"
-
-msgid "Find Services"
-msgstr "Szolgáltatások keresése"
-
-msgid "Add to Buddy List"
-msgstr "Felvétel a partnerlistára"
-
-msgid "Gateway"
-msgstr "Átjáró"
-
-msgid "Directory"
-msgstr "Címtár"
-
-msgid "PubSub Collection"
-msgstr "PubSub gyűjtemény"
-
-msgid "PubSub Leaf"
-msgstr "PubSub levél"
-
-msgid ""
-"\n"
-"<b>Description:</b> "
-msgstr ""
-"\n"
-"<b>Leírás:</b>"
-
-#. Create the window.
-msgid "Service Discovery"
-msgstr "Szolgáltatásfeltérképezés"
-
-msgid "_Browse"
-msgstr "_Tallózás"
-
-msgid "Server does not exist"
-msgstr "A kiszolgáló nem létezik"
-
-msgid "Server does not support service discovery"
-msgstr "A kiszolgáló nem támogatja a szolgáltatásfeltérképezést"
-
-msgid "XMPP Service Discovery"
-msgstr "XMPP szolgáltatásfeltérképezés"
-
-msgid "Allows browsing and registering services."
-msgstr "Lehetővé teszi szolgáltatások tallózását és regisztrálását."
-
-msgid ""
-"This plugin is useful for registering with legacy transports or other XMPP "
-"services."
-msgstr ""
-"Ez a bővítmény örökölt átvitelekkel történő, vagy más XMPP szolgáltatásokhoz "
-"való regisztráláshoz hasznos."
-
 msgid "Buddy is idle"
 msgstr "A partner inaktív"
 
@@ -13395,6 +13400,68 @@
 msgid "Apply in IMs"
 msgstr "Alkalmazás üzenetváltásokban"
 
+#. Note to translators: The string "Enter an XMPP Server" is asking the
+#. user to type the name of an XMPP server which will then be queried
+msgid "Server name request"
+msgstr "Kiszolgálónév-kérés"
+
+msgid "Enter an XMPP Server"
+msgstr "Adjon meg egy XMPP kiszolgálót"
+
+msgid "Select an XMPP server to query"
+msgstr "Válassza ki a lekérdezendő XMPP kiszolgálót"
+
+msgid "Find Services"
+msgstr "Szolgáltatások keresése"
+
+msgid "Add to Buddy List"
+msgstr "Felvétel a partnerlistára"
+
+msgid "Gateway"
+msgstr "Átjáró"
+
+msgid "Directory"
+msgstr "Címtár"
+
+msgid "PubSub Collection"
+msgstr "PubSub gyűjtemény"
+
+msgid "PubSub Leaf"
+msgstr "PubSub levél"
+
+msgid ""
+"\n"
+"<b>Description:</b> "
+msgstr ""
+"\n"
+"<b>Leírás:</b>"
+
+#. Create the window.
+msgid "Service Discovery"
+msgstr "Szolgáltatásfeltérképezés"
+
+msgid "_Browse"
+msgstr "_Tallózás"
+
+msgid "Server does not exist"
+msgstr "A kiszolgáló nem létezik"
+
+msgid "Server does not support service discovery"
+msgstr "A kiszolgáló nem támogatja a szolgáltatásfeltérképezést"
+
+msgid "XMPP Service Discovery"
+msgstr "XMPP szolgáltatásfeltérképezés"
+
+msgid "Allows browsing and registering services."
+msgstr "Lehetővé teszi szolgáltatások tallózását és regisztrálását."
+
+msgid ""
+"This plugin is useful for registering with legacy transports or other XMPP "
+"services."
+msgstr ""
+"Ez a bővítmény örökölt átvitelekkel történő, vagy más XMPP szolgáltatásokhoz "
+"való regisztráláshoz hasznos."
+
 msgid "By conversation count"
 msgstr "Társalgások száma szerint"