From owner-freebsd-gecko@FreeBSD.ORG Sun Sep 16 10:25:20 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8C9C0106566B for ; Sun, 16 Sep 2012 10:25:20 +0000 (UTC) (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.245.56]) by mx1.freebsd.org (Postfix) with ESMTP id EE20E8FC14 for ; Sun, 16 Sep 2012 10:25:19 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.245.56]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id q8GAPC9d079507 for ; Sun, 16 Sep 2012 10:25:12 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id q8GAP7YW077591 for freebsd-gecko@freebsd.org; Sun, 16 Sep 2012 10:25:07 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sun, 16 Sep 2012 10:25:07 GMT Message-Id: <201209161025.q8GAP7YW077591@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [SVN-Commit] r1019 - in trunk: mail/thunderbird-esr/files mail/thunderbird/files www/firefox-esr/files www/firefox-nightly/files www/firefox/files www/libxul-esr/files www/libxul/files www/seamonkey/files X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Sep 2012 10:25:20 -0000 Author: jbeich Date: Sun Sep 16 10:25:07 2012 New Revision: 1019 Log: add more reporters in about:memory page-faults-hard page-faults-soft resident vsize Added: trunk/mail/thunderbird-esr/files/patch-bug791366 trunk/mail/thunderbird/files/patch-bug791366 trunk/www/firefox-esr/files/patch-bug791366 trunk/www/firefox-nightly/files/patch-bug791366 trunk/www/firefox/files/patch-bug791366 trunk/www/libxul-esr/files/patch-bug791366 trunk/www/libxul/files/patch-bug791366 trunk/www/seamonkey/files/patch-bug791366 Added: trunk/mail/thunderbird-esr/files/patch-bug791366 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/mail/thunderbird-esr/files/patch-bug791366 Sun Sep 16 10:25:07 2012 (r1019) @@ -0,0 +1,124 @@ +diff --git mozilla/xpcom/base/nsMemoryReporterManager.cpp mozilla/xpcom/base/nsMemoryReporterManager.cpp +index a9aff58..674e757 100644 +--- mozilla/xpcom/base/nsMemoryReporterManager.cpp ++++ mozilla/xpcom/base/nsMemoryReporterManager.cpp +@@ -64,7 +64,7 @@ extern void jemalloc_stats(jemalloc_stat + # endif // XP_LINUX + #endif // MOZ_MEMORY + +-#if defined(XP_LINUX) || defined(XP_MACOSX) ++#ifdef XP_UNIX + + #include + #include +@@ -122,6 +122,78 @@ static PRInt64 GetResident() + return GetProcSelfStatmField(1); + } + ++#elif defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) ++ ++#include ++#include ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include ++#endif ++ ++#include ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(__DragonFly__) ++#define KP_SIZE(kp) (kp.kp_vm_map_size) ++#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize()) ++#elif defined(__FreeBSD__) ++#define KP_SIZE(kp) (kp.ki_size) ++#define KP_RSS(kp) (kp.ki_rssize * getpagesize()) ++#elif defined(__NetBSD__) ++#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#elif defined(__OpenBSD__) ++#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \ ++ + kp.p_vm_tsize) * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#endif ++ ++static nsresult GetKinfoProcSelf(KINFO_PROC *proc) ++{ ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; ++ u_int miblen = sizeof(mib) / sizeof(mib[0]); ++ size_t size = sizeof(KINFO_PROC); ++ if (sysctl(mib, miblen, proc, &size, NULL, 0)) ++ return NS_ERROR_FAILURE; ++ ++ return NS_OK; ++} ++ ++static PRInt64 GetVsize() ++{ ++ KINFO_PROC proc; ++ if (NS_SUCCEEDED(GetKinfoProcSelf(&proc))) ++ return KP_SIZE(proc); ++ ++ return -1; ++} ++ ++static PRInt64 GetResident() ++{ ++ KINFO_PROC proc; ++ if (NS_SUCCEEDED(GetKinfoProcSelf(&proc))) ++ return KP_RSS(proc); ++ ++ return -1; ++} ++ + #elif defined(XP_MACOSX) + + #include +@@ -224,7 +297,7 @@ static PRInt64 GetResident() + + #endif + +-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(XP_WIN) ++#if defined(XP_UNIX) || defined(XP_WIN) + NS_MEMORY_REPORTER_IMPLEMENT(Vsize, + "vsize", + KIND_OTHER, +@@ -239,7 +312,7 @@ NS_MEMORY_REPORTER_IMPLEMENT(Vsize, + "measure of the memory resources used by the process.") + #endif + +-#if defined(XP_LINUX) || defined(XP_MACOSX) ++#if defined(XP_UNIX) + NS_MEMORY_REPORTER_IMPLEMENT(PageFaultsSoft, + "page-faults-soft", + KIND_OTHER, +@@ -457,11 +530,11 @@ nsMemoryReporterManager::Init() + REGISTER(HeapUnallocated); + REGISTER(Resident); + +-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(XP_WIN) ++#if defined(XP_UNIX) || defined(XP_WIN) + REGISTER(Vsize); + #endif + +-#if defined(XP_LINUX) || defined(XP_MACOSX) ++#if defined(XP_UNIX) + REGISTER(PageFaultsSoft); + REGISTER(PageFaultsHard); + #endif Added: trunk/mail/thunderbird/files/patch-bug791366 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/mail/thunderbird/files/patch-bug791366 Sun Sep 16 10:25:07 2012 (r1019) @@ -0,0 +1,95 @@ +diff --git mozilla/xpcom/base/nsMemoryReporterManager.cpp mozilla/xpcom/base/nsMemoryReporterManager.cpp +index a9aff58..674e757 100644 +--- mozilla/xpcom/base/nsMemoryReporterManager.cpp ++++ mozilla/xpcom/base/nsMemoryReporterManager.cpp +@@ -32,7 +32,7 @@ using namespace mozilla; + # include "jemalloc.h" + #endif // MOZ_MEMORY + +-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(SOLARIS) ++#ifdef XP_UNIX + + #include + #include +@@ -95,6 +95,81 @@ static nsresult GetResident(PRInt64 *n) + return GetProcSelfStatmField(1, n); + } + ++#elif defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) ++ ++#include ++#include ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include ++#endif ++ ++#include ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(__DragonFly__) ++#define KP_SIZE(kp) (kp.kp_vm_map_size) ++#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize()) ++#elif defined(__FreeBSD__) ++#define KP_SIZE(kp) (kp.ki_size) ++#define KP_RSS(kp) (kp.ki_rssize * getpagesize()) ++#elif defined(__NetBSD__) ++#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#elif defined(__OpenBSD__) ++#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \ ++ + kp.p_vm_tsize) * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#endif ++ ++static nsresult GetKinfoProcSelf(KINFO_PROC *proc) ++{ ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; ++ u_int miblen = sizeof(mib) / sizeof(mib[0]); ++ size_t size = sizeof(KINFO_PROC); ++ if (sysctl(mib, miblen, proc, &size, NULL, 0)) ++ return NS_ERROR_FAILURE; ++ ++ return NS_OK; ++} ++ ++#define HAVE_VSIZE_AND_RESIDENT_REPORTERS 1 ++static nsresult GetVsize(PRInt64 *n) ++{ ++ KINFO_PROC proc; ++ nsresult rv = GetKinfoProcSelf(&proc); ++ if (NS_SUCCEEDED(rv)) ++ *n = KP_SIZE(proc); ++ ++ return rv; ++} ++ ++static nsresult GetResident(PRInt64 *n) ++{ ++ KINFO_PROC proc; ++ nsresult rv = GetKinfoProcSelf(&proc); ++ if (NS_SUCCEEDED(rv)) ++ *n = KP_RSS(proc); ++ ++ return rv; ++} ++ + #elif defined(SOLARIS) + + #include Added: trunk/www/firefox-esr/files/patch-bug791366 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/firefox-esr/files/patch-bug791366 Sun Sep 16 10:25:07 2012 (r1019) @@ -0,0 +1,124 @@ +diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp +index a9aff58..674e757 100644 +--- xpcom/base/nsMemoryReporterManager.cpp ++++ xpcom/base/nsMemoryReporterManager.cpp +@@ -64,7 +64,7 @@ extern void jemalloc_stats(jemalloc_stat + # endif // XP_LINUX + #endif // MOZ_MEMORY + +-#if defined(XP_LINUX) || defined(XP_MACOSX) ++#ifdef XP_UNIX + + #include + #include +@@ -122,6 +122,78 @@ static PRInt64 GetResident() + return GetProcSelfStatmField(1); + } + ++#elif defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) ++ ++#include ++#include ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include ++#endif ++ ++#include ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(__DragonFly__) ++#define KP_SIZE(kp) (kp.kp_vm_map_size) ++#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize()) ++#elif defined(__FreeBSD__) ++#define KP_SIZE(kp) (kp.ki_size) ++#define KP_RSS(kp) (kp.ki_rssize * getpagesize()) ++#elif defined(__NetBSD__) ++#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#elif defined(__OpenBSD__) ++#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \ ++ + kp.p_vm_tsize) * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#endif ++ ++static nsresult GetKinfoProcSelf(KINFO_PROC *proc) ++{ ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; ++ u_int miblen = sizeof(mib) / sizeof(mib[0]); ++ size_t size = sizeof(KINFO_PROC); ++ if (sysctl(mib, miblen, proc, &size, NULL, 0)) ++ return NS_ERROR_FAILURE; ++ ++ return NS_OK; ++} ++ ++static PRInt64 GetVsize() ++{ ++ KINFO_PROC proc; ++ if (NS_SUCCEEDED(GetKinfoProcSelf(&proc))) ++ return KP_SIZE(proc); ++ ++ return -1; ++} ++ ++static PRInt64 GetResident() ++{ ++ KINFO_PROC proc; ++ if (NS_SUCCEEDED(GetKinfoProcSelf(&proc))) ++ return KP_RSS(proc); ++ ++ return -1; ++} ++ + #elif defined(XP_MACOSX) + + #include +@@ -224,7 +297,7 @@ static PRInt64 GetResident() + + #endif + +-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(XP_WIN) ++#if defined(XP_UNIX) || defined(XP_WIN) + NS_MEMORY_REPORTER_IMPLEMENT(Vsize, + "vsize", + KIND_OTHER, +@@ -239,7 +312,7 @@ NS_MEMORY_REPORTER_IMPLEMENT(Vsize, + "measure of the memory resources used by the process.") + #endif + +-#if defined(XP_LINUX) || defined(XP_MACOSX) ++#if defined(XP_UNIX) + NS_MEMORY_REPORTER_IMPLEMENT(PageFaultsSoft, + "page-faults-soft", + KIND_OTHER, +@@ -457,11 +530,11 @@ nsMemoryReporterManager::Init() + REGISTER(HeapUnallocated); + REGISTER(Resident); + +-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(XP_WIN) ++#if defined(XP_UNIX) || defined(XP_WIN) + REGISTER(Vsize); + #endif + +-#if defined(XP_LINUX) || defined(XP_MACOSX) ++#if defined(XP_UNIX) + REGISTER(PageFaultsSoft); + REGISTER(PageFaultsHard); + #endif Added: trunk/www/firefox-nightly/files/patch-bug791366 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/firefox-nightly/files/patch-bug791366 Sun Sep 16 10:25:07 2012 (r1019) @@ -0,0 +1,95 @@ +diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp +index a9aff58..674e757 100644 +--- xpcom/base/nsMemoryReporterManager.cpp ++++ xpcom/base/nsMemoryReporterManager.cpp +@@ -32,7 +32,7 @@ using namespace mozilla; + # include "jemalloc.h" + #endif // MOZ_MEMORY + +-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(SOLARIS) ++#ifdef XP_UNIX + + #include + #include +@@ -95,6 +95,81 @@ static nsresult GetResident(int64_t *n) + return GetProcSelfStatmField(1, n); + } + ++#elif defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) ++ ++#include ++#include ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include ++#endif ++ ++#include ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(__DragonFly__) ++#define KP_SIZE(kp) (kp.kp_vm_map_size) ++#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize()) ++#elif defined(__FreeBSD__) ++#define KP_SIZE(kp) (kp.ki_size) ++#define KP_RSS(kp) (kp.ki_rssize * getpagesize()) ++#elif defined(__NetBSD__) ++#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#elif defined(__OpenBSD__) ++#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \ ++ + kp.p_vm_tsize) * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#endif ++ ++static nsresult GetKinfoProcSelf(KINFO_PROC *proc) ++{ ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; ++ u_int miblen = sizeof(mib) / sizeof(mib[0]); ++ size_t size = sizeof(KINFO_PROC); ++ if (sysctl(mib, miblen, proc, &size, NULL, 0)) ++ return NS_ERROR_FAILURE; ++ ++ return NS_OK; ++} ++ ++#define HAVE_VSIZE_AND_RESIDENT_REPORTERS 1 ++static nsresult GetVsize(int64_t *n) ++{ ++ KINFO_PROC proc; ++ nsresult rv = GetKinfoProcSelf(&proc); ++ if (NS_SUCCEEDED(rv)) ++ *n = KP_SIZE(proc); ++ ++ return rv; ++} ++ ++static nsresult GetResident(int64_t *n) ++{ ++ KINFO_PROC proc; ++ nsresult rv = GetKinfoProcSelf(&proc); ++ if (NS_SUCCEEDED(rv)) ++ *n = KP_RSS(proc); ++ ++ return rv; ++} ++ + #elif defined(SOLARIS) + + #include Added: trunk/www/firefox/files/patch-bug791366 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/firefox/files/patch-bug791366 Sun Sep 16 10:25:07 2012 (r1019) @@ -0,0 +1,95 @@ +diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp +index a9aff58..674e757 100644 +--- xpcom/base/nsMemoryReporterManager.cpp ++++ xpcom/base/nsMemoryReporterManager.cpp +@@ -32,7 +32,7 @@ using namespace mozilla; + # include "jemalloc.h" + #endif // MOZ_MEMORY + +-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(SOLARIS) ++#ifdef XP_UNIX + + #include + #include +@@ -95,6 +95,81 @@ static nsresult GetResident(PRInt64 *n) + return GetProcSelfStatmField(1, n); + } + ++#elif defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) ++ ++#include ++#include ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include ++#endif ++ ++#include ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(__DragonFly__) ++#define KP_SIZE(kp) (kp.kp_vm_map_size) ++#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize()) ++#elif defined(__FreeBSD__) ++#define KP_SIZE(kp) (kp.ki_size) ++#define KP_RSS(kp) (kp.ki_rssize * getpagesize()) ++#elif defined(__NetBSD__) ++#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#elif defined(__OpenBSD__) ++#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \ ++ + kp.p_vm_tsize) * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#endif ++ ++static nsresult GetKinfoProcSelf(KINFO_PROC *proc) ++{ ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; ++ u_int miblen = sizeof(mib) / sizeof(mib[0]); ++ size_t size = sizeof(KINFO_PROC); ++ if (sysctl(mib, miblen, proc, &size, NULL, 0)) ++ return NS_ERROR_FAILURE; ++ ++ return NS_OK; ++} ++ ++#define HAVE_VSIZE_AND_RESIDENT_REPORTERS 1 ++static nsresult GetVsize(PRInt64 *n) ++{ ++ KINFO_PROC proc; ++ nsresult rv = GetKinfoProcSelf(&proc); ++ if (NS_SUCCEEDED(rv)) ++ *n = KP_SIZE(proc); ++ ++ return rv; ++} ++ ++static nsresult GetResident(PRInt64 *n) ++{ ++ KINFO_PROC proc; ++ nsresult rv = GetKinfoProcSelf(&proc); ++ if (NS_SUCCEEDED(rv)) ++ *n = KP_RSS(proc); ++ ++ return rv; ++} ++ + #elif defined(SOLARIS) + + #include Added: trunk/www/libxul-esr/files/patch-bug791366 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/libxul-esr/files/patch-bug791366 Sun Sep 16 10:25:07 2012 (r1019) @@ -0,0 +1,124 @@ +diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp +index a9aff58..674e757 100644 +--- xpcom/base/nsMemoryReporterManager.cpp ++++ xpcom/base/nsMemoryReporterManager.cpp +@@ -64,7 +64,7 @@ extern void jemalloc_stats(jemalloc_stat + # endif // XP_LINUX + #endif // MOZ_MEMORY + +-#if defined(XP_LINUX) || defined(XP_MACOSX) ++#ifdef XP_UNIX + + #include + #include +@@ -122,6 +122,78 @@ static PRInt64 GetResident() + return GetProcSelfStatmField(1); + } + ++#elif defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) ++ ++#include ++#include ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include ++#endif ++ ++#include ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(__DragonFly__) ++#define KP_SIZE(kp) (kp.kp_vm_map_size) ++#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize()) ++#elif defined(__FreeBSD__) ++#define KP_SIZE(kp) (kp.ki_size) ++#define KP_RSS(kp) (kp.ki_rssize * getpagesize()) ++#elif defined(__NetBSD__) ++#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#elif defined(__OpenBSD__) ++#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \ ++ + kp.p_vm_tsize) * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#endif ++ ++static nsresult GetKinfoProcSelf(KINFO_PROC *proc) ++{ ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; ++ u_int miblen = sizeof(mib) / sizeof(mib[0]); ++ size_t size = sizeof(KINFO_PROC); ++ if (sysctl(mib, miblen, proc, &size, NULL, 0)) ++ return NS_ERROR_FAILURE; ++ ++ return NS_OK; ++} ++ ++static PRInt64 GetVsize() ++{ ++ KINFO_PROC proc; ++ if (NS_SUCCEEDED(GetKinfoProcSelf(&proc))) ++ return KP_SIZE(proc); ++ ++ return -1; ++} ++ ++static PRInt64 GetResident() ++{ ++ KINFO_PROC proc; ++ if (NS_SUCCEEDED(GetKinfoProcSelf(&proc))) ++ return KP_RSS(proc); ++ ++ return -1; ++} ++ + #elif defined(XP_MACOSX) + + #include +@@ -224,7 +297,7 @@ static PRInt64 GetResident() + + #endif + +-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(XP_WIN) ++#if defined(XP_UNIX) || defined(XP_WIN) + NS_MEMORY_REPORTER_IMPLEMENT(Vsize, + "vsize", + KIND_OTHER, +@@ -239,7 +312,7 @@ NS_MEMORY_REPORTER_IMPLEMENT(Vsize, + "measure of the memory resources used by the process.") + #endif + +-#if defined(XP_LINUX) || defined(XP_MACOSX) ++#if defined(XP_UNIX) + NS_MEMORY_REPORTER_IMPLEMENT(PageFaultsSoft, + "page-faults-soft", + KIND_OTHER, +@@ -457,11 +530,11 @@ nsMemoryReporterManager::Init() + REGISTER(HeapUnallocated); + REGISTER(Resident); + +-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(XP_WIN) ++#if defined(XP_UNIX) || defined(XP_WIN) + REGISTER(Vsize); + #endif + +-#if defined(XP_LINUX) || defined(XP_MACOSX) ++#if defined(XP_UNIX) + REGISTER(PageFaultsSoft); + REGISTER(PageFaultsHard); + #endif Added: trunk/www/libxul/files/patch-bug791366 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/libxul/files/patch-bug791366 Sun Sep 16 10:25:07 2012 (r1019) @@ -0,0 +1,95 @@ +diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp +index a9aff58..674e757 100644 +--- xpcom/base/nsMemoryReporterManager.cpp ++++ xpcom/base/nsMemoryReporterManager.cpp +@@ -32,7 +32,7 @@ using namespace mozilla; + # include "jemalloc.h" + #endif // MOZ_MEMORY + +-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(SOLARIS) ++#ifdef XP_UNIX + + #include + #include +@@ -95,6 +95,81 @@ static nsresult GetResident(PRInt64 *n) + return GetProcSelfStatmField(1, n); + } + ++#elif defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) ++ ++#include ++#include ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include ++#endif ++ ++#include ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(__DragonFly__) ++#define KP_SIZE(kp) (kp.kp_vm_map_size) ++#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize()) ++#elif defined(__FreeBSD__) ++#define KP_SIZE(kp) (kp.ki_size) ++#define KP_RSS(kp) (kp.ki_rssize * getpagesize()) ++#elif defined(__NetBSD__) ++#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#elif defined(__OpenBSD__) ++#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \ ++ + kp.p_vm_tsize) * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#endif ++ ++static nsresult GetKinfoProcSelf(KINFO_PROC *proc) ++{ ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; ++ u_int miblen = sizeof(mib) / sizeof(mib[0]); ++ size_t size = sizeof(KINFO_PROC); ++ if (sysctl(mib, miblen, proc, &size, NULL, 0)) ++ return NS_ERROR_FAILURE; ++ ++ return NS_OK; ++} ++ ++#define HAVE_VSIZE_AND_RESIDENT_REPORTERS 1 ++static nsresult GetVsize(PRInt64 *n) ++{ ++ KINFO_PROC proc; ++ nsresult rv = GetKinfoProcSelf(&proc); ++ if (NS_SUCCEEDED(rv)) ++ *n = KP_SIZE(proc); ++ ++ return rv; ++} ++ ++static nsresult GetResident(PRInt64 *n) ++{ ++ KINFO_PROC proc; ++ nsresult rv = GetKinfoProcSelf(&proc); ++ if (NS_SUCCEEDED(rv)) ++ *n = KP_RSS(proc); ++ ++ return rv; ++} ++ + #elif defined(SOLARIS) + + #include Added: trunk/www/seamonkey/files/patch-bug791366 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/seamonkey/files/patch-bug791366 Sun Sep 16 10:25:07 2012 (r1019) @@ -0,0 +1,95 @@ +diff --git mozilla/xpcom/base/nsMemoryReporterManager.cpp mozilla/xpcom/base/nsMemoryReporterManager.cpp +index a9aff58..674e757 100644 +--- mozilla/xpcom/base/nsMemoryReporterManager.cpp ++++ mozilla/xpcom/base/nsMemoryReporterManager.cpp +@@ -32,7 +32,7 @@ using namespace mozilla; + # include "jemalloc.h" + #endif // MOZ_MEMORY + +-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(SOLARIS) ++#ifdef XP_UNIX + + #include + #include +@@ -95,6 +95,81 @@ static nsresult GetResident(PRInt64 *n) + return GetProcSelfStatmField(1, n); + } + ++#elif defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) ++ ++#include ++#include ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include ++#endif ++ ++#include ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(__DragonFly__) ++#define KP_SIZE(kp) (kp.kp_vm_map_size) ++#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize()) ++#elif defined(__FreeBSD__) ++#define KP_SIZE(kp) (kp.ki_size) ++#define KP_RSS(kp) (kp.ki_rssize * getpagesize()) ++#elif defined(__NetBSD__) ++#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#elif defined(__OpenBSD__) ++#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \ ++ + kp.p_vm_tsize) * getpagesize()) ++#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) ++#endif ++ ++static nsresult GetKinfoProcSelf(KINFO_PROC *proc) ++{ ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; ++ u_int miblen = sizeof(mib) / sizeof(mib[0]); ++ size_t size = sizeof(KINFO_PROC); ++ if (sysctl(mib, miblen, proc, &size, NULL, 0)) ++ return NS_ERROR_FAILURE; ++ ++ return NS_OK; ++} ++ ++#define HAVE_VSIZE_AND_RESIDENT_REPORTERS 1 ++static nsresult GetVsize(PRInt64 *n) ++{ ++ KINFO_PROC proc; ++ nsresult rv = GetKinfoProcSelf(&proc); ++ if (NS_SUCCEEDED(rv)) ++ *n = KP_SIZE(proc); ++ ++ return rv; ++} ++ ++static nsresult GetResident(PRInt64 *n) ++{ ++ KINFO_PROC proc; ++ nsresult rv = GetKinfoProcSelf(&proc); ++ if (NS_SUCCEEDED(rv)) ++ *n = KP_RSS(proc); ++ ++ return rv; ++} ++ + #elif defined(SOLARIS) + + #include From owner-freebsd-gecko@FreeBSD.ORG Mon Sep 17 08:48:43 2012 Return-Path: Delivered-To: gecko@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EC458106566C for ; Mon, 17 Sep 2012 08:48:42 +0000 (UTC) (envelope-from Pieter.Donche@ua.ac.be) Received: from mailer04.ua.ac.be (mailer04.ua.ac.be [143.169.242.12]) by mx1.freebsd.org (Postfix) with ESMTP id 638F88FC12 for ; Mon, 17 Sep 2012 08:48:41 +0000 (UTC) Received: from macos.cmi.ua.ac.be (macos.cmi.ua.ac.be [143.129.75.1]) by mailer04.ua.ac.be (8.13.1/8.13.1) with ESMTP id q8H8kxEa000437 for ; Mon, 17 Sep 2012 10:46:59 +0200 Received: from macos.cmi.ua.ac.be (localhost [127.0.0.1]) by macos.cmi.ua.ac.be (8.14.5/8.14.5) with ESMTP id q8H8kwvN042708 for ; Mon, 17 Sep 2012 10:46:58 +0200 (CEST) (envelope-from Pieter.Donche@ua.ac.be) Received: from localhost (pdon@localhost) by macos.cmi.ua.ac.be (8.14.5/8.14.5/Submit) with ESMTP id q8H8kvlK042705 for ; Mon, 17 Sep 2012 10:46:57 +0200 (CEST) (envelope-from Pieter.Donche@ua.ac.be) X-Authentication-Warning: macos.cmi.ua.ac.be: pdon owned process doing -bs Date: Mon, 17 Sep 2012 10:46:57 +0200 (CEST) From: Pieter Donche X-X-Sender: pdon@macos.cmi.ua.ac.be To: gecko@FreeBSD.org Message-ID: User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="825750751-1717337581-1347871617=:42434" X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-3.0 (mailer04.ua.ac.be [143.169.242.12]); Mon, 17 Sep 2012 10:46:59 +0200 (CEST) Cc: Subject: problem upgrade libxul-1.9.2.28_1 -> 10.0.7 X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Pieter Donche List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Sep 2012 08:48:43 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --825750751-1717337581-1347871617=:42434 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII Hi, During my weekly portupgrade I got this error: ... ===> Running ldconfig /sbin/ldconfig -m /usr/local/lib ===> Registering installation for startup-notification-0.12 ===> Building package for startup-notification-0.12 ===> Returning to build of libxul-10.0.7 ===> libxul-10.0.7 depends on shared library: iconv.3 - found ===> libxul-10.0.7 depends on shared library: GL.1 - found ===> libxul-10.0.7 depends on shared library: atk-1.0.0 - found ===> libxul-10.0.7 depends on shared library: glib-2.0.0 - found ===> libxul-10.0.7 depends on shared library: gtk-x11-2.0.0 - found ===> libxul-10.0.7 depends on shared library: IDL-2.0 - found ===> libxul-10.0.7 depends on shared library: pango-1.0.0 - found ===> Configuring for libxul-10.0.7 (cd /usr/ports/www/libxul/work/mozilla-esr10 && /usr/local/bin/autoconf-2.13) (cd /usr/ports/www/libxul/work/mozilla-esr10/js/src/ && /usr/local/bin/autoconf- 2.13) Adding configure options from /usr/ports/www/libxul/work/mozilla-esr10/./.mozcon fig: --enable-application=xulrunner --prefix=/usr/ports/www/libxul/work/fake --enable-system-cairo --enable-system-pixman etc... ... --disable-debug --disable-logging --disable-logging configure: warning: x86_64-portbld-freebsd8.3: invalid host type creating cache ./config.cache checking host system type... x86_64-portbld-freebsd8.3 checking target system type... x86_64-portbld-freebsd8.3 checking build system type... x86_64-portbld-freebsd8.3 etc... ... checking for png_get_valid in -lpng... yes checking for png_get_acTL in -lpng... no configure: error: --with-system-png won't work because the system's libpng doesn 't have APNG support ===> Script "configure" failed unexpectedly. Please report the problem to gecko@FreeBSD.org [maintainer] and attach the "/usr/ports/www/libxul/work/mozilla-esr10/config.log" including the output of the failure of your make command. Also, it might be a good idea to provide an overview of all packages installed on your system (e.g. a /usr/sbin/pkg_info -Ea). *** Error code 1 Stop in /usr/ports/www/libxul. *** Error code 1 Stop in /usr/ports/www/libxul. ---> Build of www/libxul ended at: Mon, 17 Sep 2012 10:01:55 +0200 (consumed 00 :12:14) ---> Upgrade of www/libxul ended at: Mon, 17 Sep 2012 10:01:55 +0200 (consumed 00:12:14) ---> ** Upgrade tasks 3: 1 done, 0 ignored, 0 skipped and 1 failed + security/p11-kit (p11-kit-0.13 -> p11-kit-0.14) ! www/libxul (libxul-1.9.2.28_1) (configure error) + graphics/ImageMagick (ImageMagick-6.7.8.6 -> ImageMagick-6.7.9.4) ---> Packages processed: 2 done, 0 ignored, 0 skipped and 1 failed What's wrong here and how to fix? I included in attachment /usr/ports/www/libxul/work/mozilla-esr10/config.log and output of /usr/sbin/pkg_info -Ea \_______________ / Pieter Donche \____________________________________________ | Dept. Mathem. & Computer Science, University of Antwerp \ | http://www.win.ua.ac.be pieter(dot)donche(at)ua.ac.be | | (UA) Middelheimlaan 1, B 2020 Antwerpen, BELGIUM (EU) | | room G1.16, tel +32 03.265.3870, fax +32 03.265.3777 | |____________________________________________________________| --825750751-1717337581-1347871617=:42434 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=config.log Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=config.log VGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBj b21waWxlcnMgd2hpbGUNCnJ1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVi dWdnaW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuDQoNCmNvbmZp Z3VyZToxMDE2OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlDQpjb25maWd1 cmU6MTAzNzogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlDQpjb25maWd1 cmU6MTA1NTogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUNCmNvbmZpZ3Vy ZToxMTM1OiBjaGVja2luZyBmb3IgbWF3aw0KY29uZmlndXJlOjExMzU6IGNo ZWNraW5nIGZvciBnYXdrDQpjb25maWd1cmU6MTEzNTogY2hlY2tpbmcgZm9y IG5hd2sNCmNvbmZpZ3VyZToxMjY1OiBjaGVja2luZyBmb3IgL3Vzci9sb2Nh bC9iaW4vcGVybA0KY29uZmlndXJlOjI0ODA6IGNoZWNraW5nIGZvciBnY2MN CmNvbmZpZ3VyZToyNTkzOiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBp bGVyIChjYyAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1XbCwt cnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIg ICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9s b2NhbC9saWIvbGlieHVsICAgICkgd29ya3MNCmNvbmZpZ3VyZToyNjA5OiBj YyAtbyBjb25mdGVzdCAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcg LWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2Nh bC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAg ICAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xv Y2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0 aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAgIGNvbmZ0ZXN0LmMgIDE+JjUN CmNvbmZpZ3VyZToyNjM1OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBp bGVyIChjYyAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1XbCwt cnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIg ICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9s b2NhbC9saWIvbGlieHVsICAgICkgaXMgYSBjcm9zcy1jb21waWxlcg0KY29u ZmlndXJlOjI2NDA6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdO VSBDDQpjb25maWd1cmU6MjY0OTogY2MgLUUgY29uZnRlc3QuYw0KY29uZmln dXJlOjI2Njg6IGNoZWNraW5nIHdoZXRoZXIgY2MgYWNjZXB0cyAtZw0KY29u ZmlndXJlOjI3MDQ6IGNoZWNraW5nIGZvciBjKysNCmNvbmZpZ3VyZToyNzM2 OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDKysgY29tcGlsZXIgKGMrKyAtTzIg LXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1XbCwtcnBhdGgsL3Vzci9s b2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIgICAgICAgIC1ML3Vz ci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGli eHVsICAgICkgd29ya3MNCmNvbmZpZ3VyZToyNzUyOiBjKysgLW8gY29uZnRl c3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vz ci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9u c3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1XbCwtcnBh dGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIgICAg ICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9sb2Nh bC9saWIvbGlieHVsICAgICBjb25mdGVzdC5DICAxPiY1DQpjb25maWd1cmU6 Mjc3ODogY2hlY2tpbmcgd2hldGhlciB0aGUgQysrIGNvbXBpbGVyIChjKysg LU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nICAtV2wsLXJwYXRoLC91 c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAt TC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGli L2xpYnh1bCAgICApIGlzIGEgY3Jvc3MtY29tcGlsZXINCmNvbmZpZ3VyZToy NzgzOiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyBHTlUgQysrDQpj b25maWd1cmU6Mjc5MjogYysrIC1FIGNvbmZ0ZXN0LkMNCmNvbmZpZ3VyZToy ODExOiBjaGVja2luZyB3aGV0aGVyIGMrKyBhY2NlcHRzIC1nDQpjb25maWd1 cmU6Mjg0NTogY2hlY2tpbmcgZm9yIHJhbmxpYg0KY29uZmlndXJlOjI4Nzc6 IGNoZWNraW5nIGZvciBhcw0KY29uZmlndXJlOjI5MzE6IGNoZWNraW5nIGZv ciBhcg0KY29uZmlndXJlOjI5NjY6IGNoZWNraW5nIGZvciBsZA0KY29uZmln dXJlOjMwMDE6IGNoZWNraW5nIGZvciBzdHJpcA0KY29uZmlndXJlOjMwMzY6 IGNoZWNraW5nIGZvciB3aW5kcmVzDQpjb25maWd1cmU6MzgwOTogY2hlY2tp bmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3INCmNvbmZpZ3VyZToz ODg5OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDKysgcHJlcHJvY2Vzc29y DQpjb25maWd1cmU6MzkwNzogYysrIC1FIC1pc3lzdGVtL3Vzci9sb2NhbC9p bmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNy L2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgY29uZnRlc3QuQyA+L2Rldi9u dWxsIDI+Y29uZnRlc3Qub3V0DQpjb25maWd1cmU6Mzk4NDogY2hlY2tpbmcg Zm9yIGEgQlNEIGNvbXBhdGlibGUgaW5zdGFsbA0KY29uZmlndXJlOjQwMzc6 IGNoZWNraW5nIHdoZXRoZXIgbG4gLXMgd29ya3MNCmNvbmZpZ3VyZTo0MDYw OiBjaGVja2luZyBmb3IgbWluaW11bSByZXF1aXJlZCBwZXJsIHZlcnNpb24g Pj0gNS4wMDYNCmNvbmZpZ3VyZTo0MDcxOiBjaGVja2luZyBmb3IgZnVsbCBw ZXJsIGluc3RhbGxhdGlvbg0KY29uZmlndXJlOjQwODY6IGNoZWNraW5nIGZv ciBweXRob24yLjcNCmNvbmZpZ3VyZTo0MTQ2OiBjaGVja2luZyBmb3IgZG94 eWdlbg0KY29uZmlndXJlOjQxOTU6IGNoZWNraW5nIGZvciBhdXRvY29uZg0K Y29uZmlndXJlOjQyNDY6IGNoZWNraW5nIGZvciB1bnppcA0KY29uZmlndXJl OjQzMDI6IGNoZWNraW5nIGZvciB6aXANCmNvbmZpZ3VyZTo0MzU2OiBjaGVj a2luZyBmb3IgbWFrZWRlcGVuZA0KY29uZmlndXJlOjQ0MDQ6IGNoZWNraW5n IGZvciB4YXJncw0KY29uZmlndXJlOjQ0NTY6IGNoZWNraW5nIGZvciBycG1i dWlsZA0KY29uZmlndXJlOjQ3NDU6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMg Y29tcGlsZXIgaXMgY2xhbmcgb2xkZXIgdGhhbiB2ZXJzaW9uIDIuOQ0KY29u ZmlndXJlOjQ3Njg6IGNjIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlh c2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNy L2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9u c3MgICAgIGNvbmZ0ZXN0LmMgMT4mNQ0KY29uZmlndXJlOjQ3OTA6IGNoZWNr aW5nIGJhZCBnY2MgdmVyc2lvbnMNCmNvbmZpZ3VyZTo0ODczOiBjaGVja2lu ZyBmb3IgZ21ha2UNCmNvbmZpZ3VyZTo0OTM2OiBjaGVja2luZyBmb3IgWA0K Y29uZmlndXJlOjUyNTA6IGNoZWNraW5nIGZvciBkbmV0X250b2EgaW4gLWxk bmV0DQpjb25maWd1cmU6NTI2OTogY2MgLW8gY29uZnRlc3QgLU8yIC1waXBl IC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNs dWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xv Y2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1XbCwtcnBhdGgsL3Vzci9sb2Nh bC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIgICAgICAgIC1ML3Vzci9s b2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVs ICAgICBjb25mdGVzdC5jIC1sZG5ldCAgIDE+JjUNCi91c3IvYmluL2xkOiBj YW5ub3QgZmluZCAtbGRuZXQNCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0g d2FzOg0KI2xpbmUgNTI1OCAiY29uZmlndXJlIg0KI2luY2x1ZGUgImNvbmZk ZWZzLmgiDQovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5 cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLw0KLyogV2UgdXNlIGNoYXIgYmVj YXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2Nj Mg0KICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlw ZSB3b3VsZCBzdGlsbCBhcHBseS4gICovDQpjaGFyIGRuZXRfbnRvYSgpOw0K DQppbnQgbWFpbigpIHsNCmRuZXRfbnRvYSgpDQo7IHJldHVybiAwOyB9DQpj b25maWd1cmU6NTI5MTogY2hlY2tpbmcgZm9yIGRuZXRfbnRvYSBpbiAtbGRu ZXRfc3R1Yg0KY29uZmlndXJlOjUzMTA6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAt cGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwv aW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vz ci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtV2wsLXJwYXRoLC91c3Iv bG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAtTC91 c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xp Ynh1bCAgICAgY29uZnRlc3QuYyAtbGRuZXRfc3R1YiAgIDE+JjUNCi91c3Iv YmluL2xkOiBjYW5ub3QgZmluZCAtbGRuZXRfc3R1Yg0KY29uZmlndXJlOiBm YWlsZWQgcHJvZ3JhbSB3YXM6DQojbGluZSA1Mjk5ICJjb25maWd1cmUiDQoj aW5jbHVkZSAiY29uZmRlZnMuaCINCi8qIE92ZXJyaWRlIGFueSBnY2MyIGlu dGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovDQovKiBX ZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJu IHR5cGUgb2YgYSBnY2MyDQogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJn dW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8NCmNoYXIg ZG5ldF9udG9hKCk7DQoNCmludCBtYWluKCkgew0KZG5ldF9udG9hKCkNCjsg cmV0dXJuIDA7IH0NCmNvbmZpZ3VyZTo1MzM5OiBjaGVja2luZyBmb3IgZ2V0 aG9zdGJ5bmFtZQ0KY29uZmlndXJlOjUzNjc6IGNjIC1vIGNvbmZ0ZXN0IC1P MiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9j YWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1J L3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtV2wsLXJwYXRoLC91 c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAt TC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGli L2xpYnh1bCAgICAgY29uZnRlc3QuYyAgMT4mNQ0KY29uZmlndXJlOjU0Mzc6 IGNoZWNraW5nIGZvciBjb25uZWN0DQpjb25maWd1cmU6NTQ2NTogY2MgLW8g Y29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lz dGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5j bHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1X bCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9s aWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vz ci9sb2NhbC9saWIvbGlieHVsICAgICBjb25mdGVzdC5jICAxPiY1DQpjb25m aWd1cmU6NTUyOTogY2hlY2tpbmcgZm9yIHJlbW92ZQ0KY29uZmlndXJlOjU1 NTc6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlh c2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNy L2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9u c3MgICAgICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91 c3IvbG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2ws LXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgY29uZnRlc3QuYyAg MT4mNQ0KY29uZmlndXJlOjU2MjE6IGNoZWNraW5nIGZvciBzaG1hdA0KY29u ZmlndXJlOjU2NDk6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0 cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAg ICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNs dWRlL25zcy9uc3MgICAgICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xp Ynh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGli L25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgY29u ZnRlc3QuYyAgMT4mNQ0KY29uZmlndXJlOjU3MjI6IGNoZWNraW5nIGZvciBJ Y2VDb25uZWN0aW9uTnVtYmVyIGluIC1sSUNFDQpjb25maWd1cmU6NTc0MTog Y2MgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5n IC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9j YWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAg ICAgIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9s b2NhbC9saWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBh dGgsL3Vzci9sb2NhbC9saWIvbGlieHVsICAgICAtTC91c3IvbG9jYWwvbGli IGNvbmZ0ZXN0LmMgLWxJQ0UgICAxPiY1DQpjb25maWd1cmU6NjE0MzogY2Mg LWMgIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3Iv bG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25z cyAgICAgY29uZnRlc3QuYyAxPiY1DQpjb25maWd1cmU6IEluIGZ1bmN0aW9u ICdtYWluJzoNCmNvbmZpZ3VyZTo2MTM5OiBlcnJvcjogJ19fdGh1bWIyX18n IHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQ0KY29u ZmlndXJlOjYxMzk6IGVycm9yOiAoRWFjaCB1bmRlY2xhcmVkIGlkZW50aWZp ZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlDQpjb25maWd1cmU6NjEzOTogZXJy b3I6IGZvciBlYWNoIGZ1bmN0aW9uIGl0IGFwcGVhcnMgaW4uKQ0KY29uZmln dXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6DQojbGluZSA2MTM2ICJjb25maWd1 cmUiDQojaW5jbHVkZSAiY29uZmRlZnMuaCINCg0KaW50IG1haW4oKSB7DQpy ZXR1cm4gc2l6ZW9mKF9fdGh1bWIyX18pOw0KOyByZXR1cm4gMDsgfQ0KY29u ZmlndXJlOjY0Mzc6IGNoZWNraW5nIHdoZXRoZXIgdGhlIGNvbXBpbGVyIHN1 cHBvcnRzIC1Xbm8taW52YWxpZC1vZmZzZXRvZg0KY29uZmlndXJlOjY0NjA6 IGMrKyAtYyAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1l eGNlcHRpb25zIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1Xbm8taW52YWxpZC1v ZmZzZXRvZiAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkv dXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25z cy9uc3MgICAgIGNvbmZ0ZXN0LkMgMT4mNQ0KY29uZmlndXJlOjY0ODc6IGNo ZWNraW5nIHdoZXRoZXIgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIC1Xbm8tdmFy aWFkaWMtbWFjcm9zDQpjb25maWd1cmU6NjUxMDogYysrIC1jIC1PMiAtcGlw ZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1z dHJpY3QtYWxpYXNpbmcgLVduby12YXJpYWRpYy1tYWNyb3MgLWlzeXN0ZW0v dXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRl L25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICBjb25mdGVz dC5DIDE+JjUNCmNvbmZpZ3VyZTo2NTM3OiBjaGVja2luZyB3aGV0aGVyIHRo ZSBjb21waWxlciBzdXBwb3J0cyAtV2Vycm9yPXJldHVybi10eXBlDQpjb25m aWd1cmU6NjU2MDogYysrIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlh c2luZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdl cnJvcj1yZXR1cm4tdHlwZSAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAg ICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9p bmNsdWRlL25zcy9uc3MgICAgIGNvbmZ0ZXN0LkMgMT4mNQ0KY29uZmlndXJl OjY1OTY6IGNoZWNraW5nIHdoZXRoZXIgbGQgaGFzIGFyY2hpdmUgZXh0cmFj dGlvbiBmbGFncw0KY29uZmlndXJlOjY2MjA6IGNjIC1vIGNvbmZ0ZXN0IC1P MiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlh c2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNy L2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9u c3MgICAgIC1XbCwtLXdob2xlLWFyY2hpdmUgY29uZnRlc3QuYyAtV2wsLS1u by13aG9sZS1hcmNoaXZlIDE+JjUNCmNvbmZpZ3VyZTo2NjUzOiBjaGVja2lu ZyB0aGF0IHN0YXRpYyBhc3NlcnRpb24gbWFjcm9zIHVzZWQgaW4gYXV0b2Nv bmYgdGVzdHMgd29yaw0KY29uZmlndXJlOjY2NzQ6IGNjIC1jIC1PMiAtcGlw ZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAt aXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2Fs L2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAg IGNvbmZ0ZXN0LmMgMT4mNQ0KY29uZmlndXJlOjY2OTE6IGNjIC1jIC1PMiAt cGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2lu ZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xv Y2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3Mg ICAgIGNvbmZ0ZXN0LmMgMT4mNQ0KY29uZmlndXJlOiBJbiBmdW5jdGlvbiAn bWFpbic6DQpjb25maWd1cmU6NjY5MjogZXJyb3I6IHNpemUgb2YgYXJyYXkg J3N0YXRpY19hc3NlcnRfbGluZV82NjkxJyBpcyBuZWdhdGl2ZQ0KY29uZmln dXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6DQojbGluZSA2Njg0ICJjb25maWd1 cmUiDQojaW5jbHVkZSAiY29uZmRlZnMuaCINCg0KI2RlZmluZSBDT05GSUdV UkVfU1RBVElDX0FTU0VSVChjb25kaXRpb24pIENPTkZJR1VSRV9TVEFUSUNf QVNTRVJUX0lNUEwoY29uZGl0aW9uLCBfX0xJTkVfXykNCiNkZWZpbmUgQ09O RklHVVJFX1NUQVRJQ19BU1NFUlRfSU1QTChjb25kaXRpb24sIGxpbmUpIENP TkZJR1VSRV9TVEFUSUNfQVNTRVJUX0lNUEwyKGNvbmRpdGlvbiwgbGluZSkN CiNkZWZpbmUgQ09ORklHVVJFX1NUQVRJQ19BU1NFUlRfSU1QTDIoY29uZGl0 aW9uLCBsaW5lKSB0eXBlZGVmIGludCBzdGF0aWNfYXNzZXJ0X2xpbmVfIyNs aW5lWyhjb25kaXRpb24pID8gMSA6IC0xXQ0KDQppbnQgbWFpbigpIHsNCkNP TkZJR1VSRV9TVEFUSUNfQVNTRVJUKDApDQo7IHJldHVybiAwOyB9DQpjb25m aWd1cmU6NjcxNDogYysrIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlh c2luZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlz eXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9p bmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICBj b25mdGVzdC5DIDE+JjUNCmNvbmZpZ3VyZTo2NzMxOiBjKysgLWMgLU8yIC1w aXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tZXhjZXB0aW9ucyAtZm5v LXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAg ICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9p bmNsdWRlL25zcy9uc3MgICAgIGNvbmZ0ZXN0LkMgMT4mNQ0KY29uZmlndXJl OiBJbiBmdW5jdGlvbiAnaW50IG1haW4oKSc6DQpjb25maWd1cmU6NjczMTog ZXJyb3I6IHNpemUgb2YgYXJyYXkgJ3N0YXRpY19hc3NlcnRfbGluZV82NzMx JyBpcyBuZWdhdGl2ZQ0KY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6 DQojbGluZSA2NzI0ICJjb25maWd1cmUiDQojaW5jbHVkZSAiY29uZmRlZnMu aCINCg0KI2RlZmluZSBDT05GSUdVUkVfU1RBVElDX0FTU0VSVChjb25kaXRp b24pIENPTkZJR1VSRV9TVEFUSUNfQVNTRVJUX0lNUEwoY29uZGl0aW9uLCBf X0xJTkVfXykNCiNkZWZpbmUgQ09ORklHVVJFX1NUQVRJQ19BU1NFUlRfSU1Q TChjb25kaXRpb24sIGxpbmUpIENPTkZJR1VSRV9TVEFUSUNfQVNTRVJUX0lN UEwyKGNvbmRpdGlvbiwgbGluZSkNCiNkZWZpbmUgQ09ORklHVVJFX1NUQVRJ Q19BU1NFUlRfSU1QTDIoY29uZGl0aW9uLCBsaW5lKSB0eXBlZGVmIGludCBz dGF0aWNfYXNzZXJ0X2xpbmVfIyNsaW5lWyhjb25kaXRpb24pID8gMSA6IC0x XQ0KDQppbnQgbWFpbigpIHsNCkNPTkZJR1VSRV9TVEFUSUNfQVNTRVJUKDAp DQo7IHJldHVybiAwOyB9DQpjb25maWd1cmU6Njc2NTogY2hlY2tpbmcgZm9y IDY0LWJpdCBPUw0KY29uZmlndXJlOjY3NzQ6IGNjIC1jIC1PMiAtcGlwZSAt Zm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5 c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgIGNv bmZ0ZXN0LmMgMT4mNQ0KY29uZmlndXJlOjcwNDU6IGNoZWNraW5nIGZvciBQ eXRob24gdmVyc2lvbiA+PSAyLjUgYnV0IG5vdCAzLngNCmNvbmZpZ3VyZTo4 MDgyOiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcw0KY29uZmln dXJlOjgwOTU6IGNwcCAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAg ICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNs dWRlL25zcy9uc3MgICAgIGNvbmZ0ZXN0LmMgPi9kZXYvbnVsbCAyPmNvbmZ0 ZXN0Lm91dA0KY29uZmlndXJlOjgxNjI6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAt cGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2lu ZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xv Y2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3Mg ICAgICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3Iv bG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJw YXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgY29uZnRlc3QuYyAgMT4m NQ0KY29uZmlndXJlOiBJbiBmdW5jdGlvbiAnbWFpbic6DQpjb25maWd1cmU6 ODE1Nzogd2FybmluZzogaW5jb21wYXRpYmxlIGltcGxpY2l0IGRlY2xhcmF0 aW9uIG9mIGJ1aWx0LWluIGZ1bmN0aW9uICdleGl0Jw0KY29uZmlndXJlOjgx ODY6IGNoZWNraW5nIGZvciB3b3JraW5nIGNvbnN0DQpjb25maWd1cmU6ODI0 MDogY2MgLWMgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8t c3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAg ICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUvbnNzL25zcyAgICAgY29uZnRlc3QuYyAxPiY1DQpjb25maWd1cmU6 ODI2MTogY2hlY2tpbmcgZm9yIG1vZGVfdA0KY29uZmlndXJlOjgyOTQ6IGNo ZWNraW5nIGZvciBvZmZfdA0KY29uZmlndXJlOjgzMjc6IGNoZWNraW5nIGZv ciBwaWRfdA0KY29uZmlndXJlOjgzNjA6IGNoZWNraW5nIGZvciBzaXplX3QN CmNvbmZpZ3VyZTo4NDAwOiBjaGVja2luZyBmb3IgX19zdGRjYWxsDQpjb25m aWd1cmU6ODQxNDogYysrIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlh c2luZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlz eXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9p bmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICBj b25mdGVzdC5DIDE+JjUNCmNvbmZpZ3VyZTo4NDA4OiBlcnJvcjogJ19fc3Rk Y2FsbCcgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlDQpjb25maWd1 cmU6ODQwODogZXJyb3I6IHRlbXBsYXRlIGFyZ3VtZW50IDEgaXMgaW52YWxp ZA0KY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6DQojbGluZSA4NDA1 ICJjb25maWd1cmUiDQojaW5jbHVkZSAiY29uZmRlZnMuaCINCnRlbXBsYXRl IDx0eXBlbmFtZSBNZXRob2Q+IHN0cnVjdCBmb287DQogICAgICAgICAgICAg ICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZm9vPHZvaWQgKCopKCk+IHt9Ow0K ICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGZvbzx2b2lk IChfX3N0ZGNhbGwqKSgpPiB7fTsNCmludCBtYWluKCkgew0KDQo7IHJldHVy biAwOyB9DQpjb25maWd1cmU6ODQ0MzogY2hlY2tpbmcgZm9yIHNzaXplX3QN CmNvbmZpZ3VyZTo4NDU2OiBjYyAtYyAtTzIgLXBpcGUgLWZuby1zdHJpY3Qt YWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xv Y2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAt SS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICBjb25mdGVzdC5jIDE+ JjUNCmNvbmZpZ3VyZTo4NDc4OiBjaGVja2luZyBmb3Igc3RfYmxrc2l6ZSBp biBzdHJ1Y3Qgc3RhdA0KY29uZmlndXJlOjg0OTE6IGNjIC1jIC1PMiAtcGlw ZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAt aXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2Fs L2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAg IGNvbmZ0ZXN0LmMgMT4mNQ0KY29uZmlndXJlOjg1MTI6IGNoZWNraW5nIGZv ciBzaWdpbmZvX3QNCmNvbmZpZ3VyZTo4NTI1OiBjYyAtYyAtTzIgLXBpcGUg LWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlz eXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9p bmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICBj b25mdGVzdC5jIDE+JjUNCmNvbmZpZ3VyZTo4NTQ4OiBjaGVja2luZyBmb3Ig aW50MTZfdA0KY29uZmlndXJlOjg1NjE6IGNjIC1jIC1PMiAtcGlwZSAtZm5v LXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3Rl bS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1 ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgIGNvbmZ0 ZXN0LmMgMT4mNQ0KY29uZmlndXJlOjg1ODM6IGNoZWNraW5nIGZvciBpbnQz Ml90DQpjb25maWd1cmU6ODU5NjogY2MgLWMgLU8yIC1waXBlIC1mbm8tc3Ry aWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vz ci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9u c3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgY29uZnRlc3Qu YyAxPiY1DQpjb25maWd1cmU6ODYxODogY2hlY2tpbmcgZm9yIGludDY0X3QN CmNvbmZpZ3VyZTo4NjMxOiBjYyAtYyAtTzIgLXBpcGUgLWZuby1zdHJpY3Qt YWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xv Y2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAt SS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICBjb25mdGVzdC5jIDE+ JjUNCmNvbmZpZ3VyZTo4NjUzOiBjaGVja2luZyBmb3IgaW50NjQNCmNvbmZp Z3VyZTo4NjY2OiBjYyAtYyAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNp bmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2lu Y2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3Iv bG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICBjb25mdGVzdC5jIDE+JjUNCmNv bmZpZ3VyZTogSW4gZnVuY3Rpb24gJ21haW4nOg0KY29uZmlndXJlOjg2NjI6 IGVycm9yOiAnaW50NjQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlz IGZ1bmN0aW9uKQ0KY29uZmlndXJlOjg2NjI6IGVycm9yOiAoRWFjaCB1bmRl Y2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlDQpjb25m aWd1cmU6ODY2MjogZXJyb3I6IGZvciBlYWNoIGZ1bmN0aW9uIGl0IGFwcGVh cnMgaW4uKQ0KY29uZmlndXJlOjg2NjI6IGVycm9yOiBleHBlY3RlZCAnOycg YmVmb3JlICdmb28nDQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoN CiNsaW5lIDg2NTggImNvbmZpZ3VyZSINCiNpbmNsdWRlICJjb25mZGVmcy5o Ig0KI2luY2x1ZGUgPHN0ZGlvLmg+DQogICAgICAgICAgICAgICAgICAjaW5j bHVkZSA8c3lzL3R5cGVzLmg+DQppbnQgbWFpbigpIHsNCmludDY0IGZvbyA9 IDA7DQo7IHJldHVybiAwOyB9DQpjb25maWd1cmU6ODY4ODogY2hlY2tpbmcg Zm9yIHVpbnQNCmNvbmZpZ3VyZTo4NzAxOiBjYyAtYyAtTzIgLXBpcGUgLWZu by1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0 ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNs dWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICBjb25m dGVzdC5jIDE+JjUNCmNvbmZpZ3VyZTo4NzIzOiBjaGVja2luZyBmb3IgdWlu dF90DQpjb25maWd1cmU6ODczNjogY2MgLWMgLU8yIC1waXBlIC1mbm8tc3Ry aWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vz ci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9u c3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgY29uZnRlc3Qu YyAxPiY1DQpjb25maWd1cmU6IEluIGZ1bmN0aW9uICdtYWluJzoNCmNvbmZp Z3VyZTo4NzMyOiBlcnJvcjogJ3VpbnRfdCcgdW5kZWNsYXJlZCAoZmlyc3Qg dXNlIGluIHRoaXMgZnVuY3Rpb24pDQpjb25maWd1cmU6ODczMjogZXJyb3I6 IChFYWNoIHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5 IG9uY2UNCmNvbmZpZ3VyZTo4NzMyOiBlcnJvcjogZm9yIGVhY2ggZnVuY3Rp b24gaXQgYXBwZWFycyBpbi4pDQpjb25maWd1cmU6ODczMjogZXJyb3I6IGV4 cGVjdGVkICc7JyBiZWZvcmUgJ2ZvbycNCmNvbmZpZ3VyZTogZmFpbGVkIHBy b2dyYW0gd2FzOg0KI2xpbmUgODcyOCAiY29uZmlndXJlIg0KI2luY2x1ZGUg ImNvbmZkZWZzLmgiDQojaW5jbHVkZSA8c3RkaW8uaD4NCiAgICAgICAgICAg ICAgICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCmludCBtYWluKCkgew0K dWludF90IGZvbyA9IDA7DQo7IHJldHVybiAwOyB9DQpjb25maWd1cmU6ODc1 ODogY2hlY2tpbmcgZm9yIHVpbnQxNl90DQpjb25maWd1cmU6ODc3MTogY2Mg LWMgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0 LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAt SS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUv bnNzL25zcyAgICAgY29uZnRlc3QuYyAxPiY1DQpjb25maWd1cmU6ODgwMjog Y2hlY2tpbmcgZm9yIHVuYW1lLmRvbWFpbm5hbWUNCmNvbmZpZ3VyZTo4ODE1 OiBjKysgLWMgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8t ZXhjZXB0aW9ucyAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3Iv bG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNz IC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgIGNvbmZ0ZXN0LkMg MT4mNQ0KY29uZmlndXJlOiBJbiBmdW5jdGlvbiAnaW50IG1haW4oKSc6DQpj b25maWd1cmU6ODgxMTogZXJyb3I6ICdzdHJ1Y3QgdXRzbmFtZScgaGFzIG5v IG1lbWJlciBuYW1lZCAnZG9tYWlubmFtZScNCmNvbmZpZ3VyZTogZmFpbGVk IHByb2dyYW0gd2FzOg0KI2xpbmUgODgwNyAiY29uZmlndXJlIg0KI2luY2x1 ZGUgImNvbmZkZWZzLmgiDQojaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4NCmlu dCBtYWluKCkgew0KIHN0cnVjdCB1dHNuYW1lICpyZXM7IGNoYXIgKmRvbWFp bjsNCiAgICAgICAgICAgICh2b2lkKXVuYW1lKHJlcyk7ICBpZiAocmVzICE9 IDApIHsgZG9tYWluID0gcmVzLT5kb21haW5uYW1lOyB9IA0KOyByZXR1cm4g MDsgfQ0KY29uZmlndXJlOjg4Mzk6IGNoZWNraW5nIGZvciB1bmFtZS5fX2Rv bWFpbm5hbWUNCmNvbmZpZ3VyZTo4ODUyOiBjKysgLWMgLU8yIC1waXBlIC1m bm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tZXhjZXB0aW9ucyAtZm5vLXN0cmlj dC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAg LUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRl L25zcy9uc3MgICAgIGNvbmZ0ZXN0LkMgMT4mNQ0KY29uZmlndXJlOiBJbiBm dW5jdGlvbiAnaW50IG1haW4oKSc6DQpjb25maWd1cmU6ODg0ODogZXJyb3I6 ICdzdHJ1Y3QgdXRzbmFtZScgaGFzIG5vIG1lbWJlciBuYW1lZCAnX19kb21h aW5uYW1lJw0KY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6DQojbGlu ZSA4ODQ0ICJjb25maWd1cmUiDQojaW5jbHVkZSAiY29uZmRlZnMuaCINCiNp bmNsdWRlIDxzeXMvdXRzbmFtZS5oPg0KaW50IG1haW4oKSB7DQogc3RydWN0 IHV0c25hbWUgKnJlczsgY2hhciAqZG9tYWluOw0KICAgICAgICAgICAgKHZv aWQpdW5hbWUocmVzKTsgIGlmIChyZXMgIT0gMCkgeyBkb21haW4gPSByZXMt Pl9fZG9tYWlubmFtZTsgfSANCjsgcmV0dXJuIDA7IH0NCmNvbmZpZ3VyZTo4 OTEyOiBjaGVja2luZyBmb3IgZ2NjIGMrKzB4IGhlYWRlcnMgYnVnIHdpdGhv dXQgcnR0aQ0KY29uZmlndXJlOjg5MjQ6IGMrKyAtYyAtTzIgLXBpcGUgLWZu by1zdHJpY3QtYWxpYXNpbmcgLWZuby1leGNlcHRpb25zIC1mbm8tc3RyaWN0 LWFsaWFzaW5nIC1zdGQ9Z251KysweCAtZm5vLXJ0dGkgLWlzeXN0ZW0vdXNy L2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25z cyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICBjb25mdGVzdC5D IDE+JjUNCmNjMXBsdXM6IGVycm9yOiB1bnJlY29nbml6ZWQgY29tbWFuZCBs aW5lIG9wdGlvbiAiLXN0ZD1nbnUrKzB4Ig0KY29uZmlndXJlOiBmYWlsZWQg cHJvZ3JhbSB3YXM6DQojbGluZSA4OTE3ICJjb25maWd1cmUiDQojaW5jbHVk ZSAiY29uZmRlZnMuaCINCiNpbmNsdWRlIDxtZW1vcnk+DQppbnQgbWFpbigp IHsNCg0KOyByZXR1cm4gMDsgfQ0KY29uZmlndXJlOjg5NDU6IGNoZWNraW5n IGZvciB1c2FibGUgY2hhcjE2X3QgKDIgYnl0ZXMsIHVuc2lnbmVkKQ0KY29u ZmlndXJlOjg5NjE6IGMrKyAtYyAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxp YXNpbmcgLWZuby1leGNlcHRpb25zIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1p c3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwv aW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAg Y29uZnRlc3QuQyAxPiY1DQpjb25maWd1cmU6ODk2MToxOiB3YXJuaW5nOiBo ZXggZXNjYXBlIHNlcXVlbmNlIG91dCBvZiByYW5nZQ0KY29uZmlndXJlOiBJ biBmdW5jdGlvbiAnaW50IG1haW4oKSc6DQpjb25maWd1cmU6ODk1NzogZXJy b3I6ICdjaGFyMTZfdCcgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3Bl DQpjb25maWd1cmU6ODk1OTogZXJyb3I6ICd1JyB3YXMgbm90IGRlY2xhcmVk IGluIHRoaXMgc2NvcGUNCmNvbmZpZ3VyZTo4OTU5OiBlcnJvcjogZXhwZWN0 ZWQgYCknIGJlZm9yZSBzdHJpbmcgY29uc3RhbnQNCmNvbmZpZ3VyZTo4OTU5 OiBlcnJvcjogZXhwZWN0ZWQgYCknIGJlZm9yZSAnOycgdG9rZW4NCmNvbmZp Z3VyZTo4OTU5OiBlcnJvcjogZXhwZWN0ZWQgYCknIGJlZm9yZSAnOycgdG9r ZW4NCmNvbmZpZ3VyZTo4OTU5OiBlcnJvcjogZXhwZWN0ZWQgYF0nIGJlZm9y ZSAnOycgdG9rZW4NCmNvbmZpZ3VyZTo4OTYwOiBlcnJvcjogZXhwZWN0ZWQg YCknIGJlZm9yZSAnYScNCmNvbmZpZ3VyZTo4OTYwOiBlcnJvcjogZXhwZWN0 ZWQgYCknIGJlZm9yZSAnOycgdG9rZW4NCmNvbmZpZ3VyZTo4OTYwOiBlcnJv cjogZXhwZWN0ZWQgYF0nIGJlZm9yZSAnOycgdG9rZW4NCmNvbmZpZ3VyZTo4 OTYxOiBlcnJvcjogZXhwZWN0ZWQgYCknIGJlZm9yZSAnXHhmZmZmZmZmZicN CmNvbmZpZ3VyZTo4OTYyOiBlcnJvcjogZXhwZWN0ZWQgYF0nIGJlZm9yZSAn OycgdG9rZW4NCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOg0KI2xp bmUgODk1MCAiY29uZmlndXJlIg0KI2luY2x1ZGUgImNvbmZkZWZzLmgiDQoN CiNkZWZpbmUgQ09ORklHVVJFX1NUQVRJQ19BU1NFUlQoY29uZGl0aW9uKSBD T05GSUdVUkVfU1RBVElDX0FTU0VSVF9JTVBMKGNvbmRpdGlvbiwgX19MSU5F X18pDQojZGVmaW5lIENPTkZJR1VSRV9TVEFUSUNfQVNTRVJUX0lNUEwoY29u ZGl0aW9uLCBsaW5lKSBDT05GSUdVUkVfU1RBVElDX0FTU0VSVF9JTVBMMihj b25kaXRpb24sIGxpbmUpDQojZGVmaW5lIENPTkZJR1VSRV9TVEFUSUNfQVNT RVJUX0lNUEwyKGNvbmRpdGlvbiwgbGluZSkgdHlwZWRlZiBpbnQgc3RhdGlj X2Fzc2VydF9saW5lXyMjbGluZVsoY29uZGl0aW9uKSA/IDEgOiAtMV0NCg0K aW50IG1haW4oKSB7DQpDT05GSUdVUkVfU1RBVElDX0FTU0VSVChzaXplb2Yo Y2hhcjE2X3QpID09IDIpOw0KICAgICAgICAgICAgICAgICAgICAgQ09ORklH VVJFX1NUQVRJQ19BU1NFUlQoY2hhcjE2X3QoLTEpID4gY2hhcjE2X3QoMCkp Ow0KICAgICAgICAgICAgICAgICAgICAgQ09ORklHVVJFX1NUQVRJQ19BU1NF UlQoc2l6ZW9mKCh1ImhlbGxvIilbMF0pID09IDIpOw0KICAgICAgICAgICAg ICAgICAgICAgQ09ORklHVVJFX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHUnYScp ID09IDIpOw0KICAgICAgICAgICAgICAgICAgICAgQ09ORklHVVJFX1NUQVRJ Q19BU1NFUlQodSdceEZGRkYnID4gdSdceDAnKQ0KOyByZXR1cm4gMDsgfQ0K Y29uZmlndXJlOjg5ODY6IGNoZWNraW5nIGZvciB1c2FibGUgd2NoYXJfdCAo MiBieXRlcywgdW5zaWduZWQpDQpjb25maWd1cmU6OTAwMDogYysrIC1jIC1P MiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWV4Y2VwdGlvbnMg LWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1 ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9j YWwvaW5jbHVkZS9uc3MvbnNzICAgICBjb25mdGVzdC5DIDE+JjUNCmNvbmZp Z3VyZTogSW4gZnVuY3Rpb24gJ2ludCBtYWluKCknOg0KY29uZmlndXJlOjg5 OTk6IGVycm9yOiBzaXplIG9mIGFycmF5ICdzdGF0aWNfYXNzZXJ0X2xpbmVf ODk5OScgaXMgbmVnYXRpdmUNCmNvbmZpZ3VyZTo5MDAwOiBlcnJvcjogc2l6 ZSBvZiBhcnJheSAnc3RhdGljX2Fzc2VydF9saW5lXzkwMDAnIGlzIG5lZ2F0 aXZlDQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoNCiNsaW5lIDg5 OTEgImNvbmZpZ3VyZSINCiNpbmNsdWRlICJjb25mZGVmcy5oIg0KI2luY2x1 ZGUgPHN0ZGRlZi5oPg0KICAgICAgICAgICAgICAgICAgICAgDQojZGVmaW5l IENPTkZJR1VSRV9TVEFUSUNfQVNTRVJUKGNvbmRpdGlvbikgQ09ORklHVVJF X1NUQVRJQ19BU1NFUlRfSU1QTChjb25kaXRpb24sIF9fTElORV9fKQ0KI2Rl ZmluZSBDT05GSUdVUkVfU1RBVElDX0FTU0VSVF9JTVBMKGNvbmRpdGlvbiwg bGluZSkgQ09ORklHVVJFX1NUQVRJQ19BU1NFUlRfSU1QTDIoY29uZGl0aW9u LCBsaW5lKQ0KI2RlZmluZSBDT05GSUdVUkVfU1RBVElDX0FTU0VSVF9JTVBM Mihjb25kaXRpb24sIGxpbmUpIHR5cGVkZWYgaW50IHN0YXRpY19hc3NlcnRf bGluZV8jI2xpbmVbKGNvbmRpdGlvbikgPyAxIDogLTFdDQoNCmludCBtYWlu KCkgew0KQ09ORklHVVJFX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHdjaGFyX3Qp ID09IDIpOw0KICAgICAgICAgICAgICAgICAgICAgQ09ORklHVVJFX1NUQVRJ Q19BU1NFUlQoKHdjaGFyX3QpLTEgPiAod2NoYXJfdCkgMCkNCjsgcmV0dXJu IDA7IH0NCmNvbmZpZ3VyZTo5MDI1OiBjaGVja2luZyBmb3IgY29tcGlsZXIg LWZzaG9ydC13Y2hhciBvcHRpb24NCmNvbmZpZ3VyZTo5MDM5OiBjKysgLW8g Y29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8t ZXhjZXB0aW9ucyAtZm5vLXN0cmljdC1hbGlhc2luZyAtZnNob3J0LXdjaGFy IC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9j YWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAg ICAgIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9s b2NhbC9saWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBh dGgsL3Vzci9sb2NhbC9saWIvbGlieHVsICAgICBjb25mdGVzdC5DICAxPiY1 DQpjb25maWd1cmU6OTA4MjogY2hlY2tpbmcgZm9yIHZpc2liaWxpdHkoaGlk ZGVuKSBhdHRyaWJ1dGUNCmNvbmZpZ3VyZTo5MTA3OiBjaGVja2luZyBmb3Ig dmlzaWJpbGl0eShkZWZhdWx0KSBhdHRyaWJ1dGUNCmNvbmZpZ3VyZTo5MTMy OiBjaGVja2luZyBmb3IgdmlzaWJpbGl0eSBwcmFnbWEgc3VwcG9ydA0KY29u ZmlndXJlOjkxNTc6IGNoZWNraW5nIEZvciBnY2MgdmlzaWJpbGl0eSBidWcg d2l0aCBjbGFzcy1sZXZlbCBhdHRyaWJ1dGVzIChHQ0MgYnVnIDI2OTA1KQ0K Y29uZmlndXJlOjkxODU6IGNoZWNraW5nIEZvciB4ODZfNjQgZ2NjIHZpc2li aWxpdHkgYnVnIHdpdGggYnVpbHRpbnMgKEdDQyBidWcgMjAyOTcpDQpjb25m aWd1cmU6OTI0MDogY2hlY2tpbmcgZm9yIGdjYyBQUjQ5OTExDQpjb25maWd1 cmU6OTMwMTogYysrIC1vIGNvbmZ0ZXN0IC1PMiAtaXN5c3RlbS91c3IvbG9j YWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1J L3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtV2wsLXJwYXRoLC91 c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAt TC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGli L2xpYnh1bCAgICAgY29uZnRlc3QuQyAgMT4mNQ0KY29uZmlndXJlOjkzMzc6 IGNoZWNraW5nIGZvciBfX2ZvcmNlX2FsaWduX2FyZ19wb2ludGVyX18gYXR0 cmlidXRlDQpjb25maWd1cmU6OTM0OTogY2MgLWMgLU8yIC1waXBlIC1mbm8t c3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XZXJyb3Ig LWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2Nh bC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAg ICBjb25mdGVzdC5jIDE+JjUNCmNjMTogd2FybmluZ3MgYmVpbmcgdHJlYXRl ZCBhcyBlcnJvcnMNCmNvbmZpZ3VyZTo5MzQzOiB3YXJuaW5nOiAnX19mb3Jj ZV9hbGlnbl9hcmdfcG9pbnRlcl9fJyBhdHRyaWJ1dGUgaWdub3JlZA0KY29u ZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6DQojbGluZSA5MzQyICJjb25m aWd1cmUiDQojaW5jbHVkZSAiY29uZmRlZnMuaCINCl9fYXR0cmlidXRlX18g KChfX2ZvcmNlX2FsaWduX2FyZ19wb2ludGVyX18pKSB2b2lkIHRlc3QoKSB7 fQ0KaW50IG1haW4oKSB7DQoNCjsgcmV0dXJuIDA7IH0NCmNvbmZpZ3VyZTo5 Mzc2OiBjaGVja2luZyBmb3IgZGlyZW50LmggdGhhdCBkZWZpbmVzIERJUg0K Y29uZmlndXJlOjkzODk6IGNjIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1h bGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9j YWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1J L3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgIGNvbmZ0ZXN0LmMgMT4m NQ0KY29uZmlndXJlOjk0MTQ6IGNoZWNraW5nIGZvciBvcGVuZGlyIGluIC1s ZGlyDQpjb25maWd1cmU6OTQzMzogY2MgLW8gY29uZnRlc3QgLU8yIC1waXBl IC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1p c3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwv aW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAg IC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2Nh bC9saWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgs L3Vzci9sb2NhbC9saWIvbGlieHVsICAgICBjb25mdGVzdC5jIC1sZGlyICAg MT4mNQ0KL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sZGlyDQpjb25maWd1 cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoNCiNsaW5lIDk0MjIgImNvbmZpZ3Vy ZSINCiNpbmNsdWRlICJjb25mZGVmcy5oIg0KLyogT3ZlcnJpZGUgYW55IGdj YzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8N Ci8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSBy ZXR1cm4gdHlwZSBvZiBhIGdjYzINCiAgICBidWlsdGluIGFuZCB0aGVuIGl0 cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLw0K Y2hhciBvcGVuZGlyKCk7DQoNCmludCBtYWluKCkgew0Kb3BlbmRpcigpDQo7 IHJldHVybiAwOyB9DQpjb25maWd1cmU6OTUwNjogY2hlY2tpbmcgZm9yIHN5 cy9ieXRlb3JkZXIuaA0KY29uZmlndXJlOjk1MTg6IGNjIC1jIC1PMiAtcGlw ZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAt aXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2Fs L2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAg ICAtSS91c3IvbG9jYWwvaW5jbHVkZSBjb25mdGVzdC5jIDE+JjUNCmNvbmZp Z3VyZTo5NTEyOjI3OiBlcnJvcjogc3lzL2J5dGVvcmRlci5oOiBObyBzdWNo IGZpbGUgb3IgZGlyZWN0b3J5DQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFt IHdhczoNCiNsaW5lIDk1MTEgImNvbmZpZ3VyZSINCiNpbmNsdWRlICJjb25m ZGVmcy5oIg0KI2luY2x1ZGUgPHN5cy9ieXRlb3JkZXIuaD4NCmludCBtYWlu KCkgew0KDQo7IHJldHVybiAwOyB9DQpjb25maWd1cmU6OTUwNjogY2hlY2tp bmcgZm9yIGNvbXBhdC5oDQpjb25maWd1cmU6OTUxODogY2MgLWMgLU8yIC1w aXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5n IC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9j YWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAg ICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIGNvbmZ0ZXN0LmMgMT4mNQ0KY29u ZmlndXJlOjk1MTI6MjA6IGVycm9yOiBjb21wYXQuaDogTm8gc3VjaCBmaWxl IG9yIGRpcmVjdG9yeQ0KY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6 DQojbGluZSA5NTExICJjb25maWd1cmUiDQojaW5jbHVkZSAiY29uZmRlZnMu aCINCiNpbmNsdWRlIDxjb21wYXQuaD4NCmludCBtYWluKCkgew0KDQo7IHJl dHVybiAwOyB9DQpjb25maWd1cmU6OTUwNjogY2hlY2tpbmcgZm9yIGdldG9w dC5oDQpjb25maWd1cmU6OTUxODogY2MgLWMgLU8yIC1waXBlIC1mbm8tc3Ry aWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vz ci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9u c3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9s b2NhbC9pbmNsdWRlIGNvbmZ0ZXN0LmMgMT4mNQ0KY29uZmlndXJlOjk1NDg6 IGNoZWNraW5nIGZvciBzeXMvYml0eXBlcy5oDQpjb25maWd1cmU6OTU2MDog Y2MgLWMgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3Ry aWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAg ICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1 ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIGNvbmZ0ZXN0 LmMgMT4mNQ0KY29uZmlndXJlOjk1NTQ6MjU6IGVycm9yOiBzeXMvYml0eXBl cy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5DQpjb25maWd1cmU6IGZh aWxlZCBwcm9ncmFtIHdhczoNCiNsaW5lIDk1NTMgImNvbmZpZ3VyZSINCiNp bmNsdWRlICJjb25mZGVmcy5oIg0KI2luY2x1ZGUgPHN5cy9iaXR5cGVzLmg+ DQppbnQgbWFpbigpIHsNCg0KOyByZXR1cm4gMDsgfQ0KY29uZmlndXJlOjk1 NDg6IGNoZWNraW5nIGZvciBtZW1vcnkuaA0KY29uZmlndXJlOjk1NjA6IGNj IC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmlj dC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAg LUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRl L25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSBjb25mdGVzdC5j IDE+JjUNCmNvbmZpZ3VyZTo5NTQ4OiBjaGVja2luZyBmb3IgdW5pc3RkLmgN CmNvbmZpZ3VyZTo5NTYwOiBjYyAtYyAtTzIgLXBpcGUgLWZuby1zdHJpY3Qt YWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xv Y2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAt SS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2Fs L2luY2x1ZGUgY29uZnRlc3QuYyAxPiY1DQpjb25maWd1cmU6OTU5MDogY2hl Y2tpbmcgZm9yIGdudS9saWJjLXZlcnNpb24uaA0KY29uZmlndXJlOjk2MDI6 IGNjIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0 cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAg ICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNs dWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSBjb25mdGVz dC5jIDE+JjUNCmNvbmZpZ3VyZTo5NTk2OjMwOiBlcnJvcjogZ251L2xpYmMt dmVyc2lvbi5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5DQpjb25maWd1 cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoNCiNsaW5lIDk1OTUgImNvbmZpZ3Vy ZSINCiNpbmNsdWRlICJjb25mZGVmcy5oIg0KI2luY2x1ZGUgPGdudS9saWJj LXZlcnNpb24uaD4NCmludCBtYWluKCkgew0KDQo7IHJldHVybiAwOyB9DQpj b25maWd1cmU6OTU5MDogY2hlY2tpbmcgZm9yIG5sX3R5cGVzLmgNCmNvbmZp Z3VyZTo5NjAyOiBjYyAtYyAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNp bmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2lu Y2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3Iv bG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1 ZGUgY29uZnRlc3QuYyAxPiY1DQpjb25maWd1cmU6OTYzMjogY2hlY2tpbmcg Zm9yIG1hbGxvYy5oDQpjb25maWd1cmU6OTY0NDogY2MgLWMgLU8yIC1waXBl IC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1p c3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwv aW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAg IC1JL3Vzci9sb2NhbC9pbmNsdWRlIGNvbmZ0ZXN0LmMgMT4mNQ0KSW4gZmls ZSBpbmNsdWRlZCBmcm9tIGNvbmZpZ3VyZTo5NjM4Og0KL3Vzci9pbmNsdWRl L21hbGxvYy5oOjM6MjogZXJyb3I6ICNlcnJvciAiPG1hbGxvYy5oPiBoYXMg YmVlbiByZXBsYWNlZCBieSA8c3RkbGliLmg+Ig0KY29uZmlndXJlOiBmYWls ZWQgcHJvZ3JhbSB3YXM6DQojbGluZSA5NjM3ICJjb25maWd1cmUiDQojaW5j bHVkZSAiY29uZmRlZnMuaCINCiNpbmNsdWRlIDxtYWxsb2MuaD4NCmludCBt YWluKCkgew0KDQo7IHJldHVybiAwOyB9DQpjb25maWd1cmU6OTY3NDogY2hl Y2tpbmcgZm9yIFgxMS9YS0JsaWIuaA0KY29uZmlndXJlOjk2ODY6IGNjIC1j IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1h bGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkv dXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25z cy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSBjb25mdGVzdC5jIDE+ JjUNCmNvbmZpZ3VyZTo5NzE2OiBjaGVja2luZyBmb3IgaW8uaA0KY29uZmln dXJlOjk3Mjg6IGNjIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2lu ZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5j bHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9s b2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVk ZSBjb25mdGVzdC5jIDE+JjUNCmNvbmZpZ3VyZTo5NzIyOjE2OiBlcnJvcjog aW8uaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQ0KY29uZmlndXJlOiBm YWlsZWQgcHJvZ3JhbSB3YXM6DQojbGluZSA5NzIxICJjb25maWd1cmUiDQoj aW5jbHVkZSAiY29uZmRlZnMuaCINCiNpbmNsdWRlIDxpby5oPg0KaW50IG1h aW4oKSB7DQoNCjsgcmV0dXJuIDA7IH0NCmNvbmZpZ3VyZTo5NzU5OiBjaGVj a2luZyBmb3Igc3lzL3N0YXR2ZnMuaA0KY29uZmlndXJlOjk3NzE6IGNjIC1j IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1h bGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkv dXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25z cy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSBjb25mdGVzdC5jIDE+ JjUNCmNvbmZpZ3VyZTo5NzU5OiBjaGVja2luZyBmb3Igc3lzL3N0YXRmcy5o DQpjb25maWd1cmU6OTc3MTogY2MgLWMgLU8yIC1waXBlIC1mbm8tc3RyaWN0 LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9s b2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3Mg LUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2Nh bC9pbmNsdWRlIGNvbmZ0ZXN0LmMgMT4mNQ0KY29uZmlndXJlOjk3NjU6MjQ6 IGVycm9yOiBzeXMvc3RhdGZzLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rv cnkNCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOg0KI2xpbmUgOTc2 NCAiY29uZmlndXJlIg0KI2luY2x1ZGUgImNvbmZkZWZzLmgiDQojaW5jbHVk ZSA8c3lzL3N0YXRmcy5oPg0KaW50IG1haW4oKSB7DQoNCjsgcmV0dXJuIDA7 IH0NCmNvbmZpZ3VyZTo5NzU5OiBjaGVja2luZyBmb3Igc3lzL3Zmcy5oDQpj b25maWd1cmU6OTc3MTogY2MgLWMgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFs aWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2Nh bC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkv dXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9p bmNsdWRlIGNvbmZ0ZXN0LmMgMT4mNQ0KY29uZmlndXJlOjk3NjU6MjE6IGVy cm9yOiBzeXMvdmZzLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkNCmNv bmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOg0KI2xpbmUgOTc2NCAiY29u ZmlndXJlIg0KI2luY2x1ZGUgImNvbmZkZWZzLmgiDQojaW5jbHVkZSA8c3lz L3Zmcy5oPg0KaW50IG1haW4oKSB7DQoNCjsgcmV0dXJuIDA7IH0NCmNvbmZp Z3VyZTo5NzU5OiBjaGVja2luZyBmb3Igc3lzL21vdW50LmgNCmNvbmZpZ3Vy ZTo5NzcxOiBjYyAtYyAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcg LWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1 ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9j YWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUg Y29uZnRlc3QuYyAxPiY1DQpjb25maWd1cmU6OTgwMjogY2hlY2tpbmcgZm9y IHN5cy9xdW90YS5oDQpjb25maWd1cmU6OTgxNDogY2MgLWMgLU8yIC1waXBl IC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1p c3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwv aW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAg IC1JL3Vzci9sb2NhbC9pbmNsdWRlIGNvbmZ0ZXN0LmMgMT4mNQ0KY29uZmln dXJlOjk4MDg6MjM6IGVycm9yOiBzeXMvcXVvdGEuaDogTm8gc3VjaCBmaWxl IG9yIGRpcmVjdG9yeQ0KY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6 DQojbGluZSA5ODA3ICJjb25maWd1cmUiDQojaW5jbHVkZSAiY29uZmRlZnMu aCINCiNpbmNsdWRlIDxzeXMvcXVvdGEuaD4NCmludCBtYWluKCkgew0KDQo7 IHJldHVybiAwOyB9DQpjb25maWd1cmU6OTgwMjogY2hlY2tpbmcgZm9yIHN5 cy9zeXNtYWNyb3MuaA0KY29uZmlndXJlOjk4MTQ6IGNjIC1jIC1PMiAtcGlw ZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAt aXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2Fs L2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAg ICAtSS91c3IvbG9jYWwvaW5jbHVkZSBjb25mdGVzdC5jIDE+JjUNCmNvbmZp Z3VyZTo5ODA4OjI3OiBlcnJvcjogc3lzL3N5c21hY3Jvcy5oOiBObyBzdWNo IGZpbGUgb3IgZGlyZWN0b3J5DQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFt IHdhczoNCiNsaW5lIDk4MDcgImNvbmZpZ3VyZSINCiNpbmNsdWRlICJjb25m ZGVmcy5oIg0KI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4NCmludCBtYWlu KCkgew0KDQo7IHJldHVybiAwOyB9DQpjb25maWd1cmU6OTg0NDogY2hlY2tp bmcgZm9yIGxpbnV4L3F1b3RhLmgNCmNvbmZpZ3VyZTo5ODU2OiBjYyAtYyAt TzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxp YXNpbmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vz ci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3Mv bnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgY29uZnRlc3QuYyAxPiY1 DQpjb25maWd1cmU6OTg1MDoyNTogZXJyb3I6IGxpbnV4L3F1b3RhLmg6IE5v IHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkNCmNvbmZpZ3VyZTogZmFpbGVkIHBy b2dyYW0gd2FzOg0KI2xpbmUgOTg0OSAiY29uZmlndXJlIg0KI2luY2x1ZGUg ImNvbmZkZWZzLmgiDQojaW5jbHVkZSA8bGludXgvcXVvdGEuaD4NCmludCBt YWluKCkgew0KDQo7IHJldHVybiAwOyB9DQpjb25maWd1cmU6OTg4NzogY2hl Y2tpbmcgZm9yIG1taW50cmluLmgNCmNvbmZpZ3VyZTo5ODk5OiBjYyAtYyAt TzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxp YXNpbmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vz ci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3Mv bnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgY29uZnRlc3QuYyAxPiY1 DQpjb25maWd1cmU6OTkzNjogY2hlY2tpbmcgZm9yIG5ldw0KY29uZmlndXJl Ojk5NDg6IGMrKyAtYyAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcg LWZuby1leGNlcHRpb25zIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mc2hvcnQt d2NoYXIgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vz ci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3Mv bnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgY29uZnRlc3QuQyAxPiY1 DQpjb25maWd1cmU6MTAwNDA6IGNoZWNraW5nIGZvciBzeXMvY2RlZnMuaA0K Y29uZmlndXJlOjEwMDUyOiBjYyAtYyAtTzIgLXBpcGUgLWZuby1zdHJpY3Qt YWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xv Y2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAt SS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2Fs L2luY2x1ZGUgY29uZnRlc3QuYyAxPiY1DQpjb25maWd1cmU6MTAwODY6IGNo ZWNraW5nIGZvciBnZXRob3N0YnluYW1lX3IgaW4gLWxjX3INCmNvbmZpZ3Vy ZToxMDEwNTogY2MgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0 LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9s b2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3Mg LUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2Nh bC9pbmNsdWRlICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAt TC91c3IvbG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAt V2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgY29uZnRlc3Qu YyAtbGNfciAgIDE+JjUNCi91c3IvYmluL2xkOiBjYW5ub3QgZmluZCAtbGNf cg0KY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6DQojbGluZSAxMDA5 NCAiY29uZmlndXJlIg0KI2luY2x1ZGUgImNvbmZkZWZzLmgiDQovKiBPdmVy cmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4g ZXJyb3IuICAqLw0KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQg bWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMg0KICAgIGJ1aWx0aW4g YW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBh cHBseS4gICovDQpjaGFyIGdldGhvc3RieW5hbWVfcigpOw0KDQppbnQgbWFp bigpIHsNCmdldGhvc3RieW5hbWVfcigpDQo7IHJldHVybiAwOyB9DQpjb25m aWd1cmU6MTAxNDM6IGNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcg ZGxvcGVuDQpjb25maWd1cmU6MTAxNjE6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAt cGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2lu ZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xv Y2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3Mg ICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgLVdsLC1ycGF0aCwvdXNyL2xv Y2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNy L2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4 dWwgICAgIGNvbmZ0ZXN0LmMgIDE+JjUNCmNvbmZpZ3VyZToxMDIwMTogY2hl Y2tpbmcgZm9yIGRsZmNuLmgNCmNvbmZpZ3VyZToxMDIxMzogY2MgLWMgLU8y IC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFz aW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3Iv bG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25z cyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIGNvbmZ0ZXN0LmMgMT4mNQ0K Y29uZmlndXJlOjEwMjQ3OiBjaGVja2luZyBmb3IgZGxhZGRyDQpjb25maWd1 cmU6MTAyNzU6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmlj dC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtRF9HTlVfU09VUkNF IC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9j YWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAg ICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtV2wsLXJwYXRoLC91c3IvbG9j YWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAtTC91c3Iv bG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1 bCAgICAgY29uZnRlc3QuYyAgMT4mNQ0KY29uZmlndXJlOjEwMjQ3OiBjaGVj a2luZyBmb3IgbWVtbWVtDQpjb25maWd1cmU6MTAyNzU6IGNjIC1vIGNvbmZ0 ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmlj dC1hbGlhc2luZyAtRF9HTlVfU09VUkNFIC1pc3lzdGVtL3Vzci9sb2NhbC9p bmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNy L2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNs dWRlICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3Iv bG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJw YXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgY29uZnRlc3QuYyAgMT4m NQ0KY29uZmlndXJlOjEwNDEwOiBjaGVja2luZyBmb3Igc29ja2V0IGluIC1s c29ja2V0DQpjb25maWd1cmU6MTA0Mjk6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAt cGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2lu ZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xv Y2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3Mg ICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgLVdsLC1ycGF0aCwvdXNyL2xv Y2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNy L2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4 dWwgICAgIGNvbmZ0ZXN0LmMgLWxzb2NrZXQgICAxPiY1DQovdXNyL2Jpbi9s ZDogY2Fubm90IGZpbmQgLWxzb2NrZXQNCmNvbmZpZ3VyZTogZmFpbGVkIHBy b2dyYW0gd2FzOg0KI2xpbmUgMTA0MTggImNvbmZpZ3VyZSINCiNpbmNsdWRl ICJjb25mZGVmcy5oIg0KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwg cHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8NCi8qIFdlIHVzZSBj aGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv ZiBhIGdjYzINCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBw cm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLw0KY2hhciBzb2NrZXQo KTsNCg0KaW50IG1haW4oKSB7DQpzb2NrZXQoKQ0KOyByZXR1cm4gMDsgfQ0K Y29uZmlndXJlOjEwNDc1OiBjaGVja2luZyBmb3IgWERyYXdMaW5lcyBpbiAt bFgxMQ0KY29uZmlndXJlOjEwNDk0OiBjYyAtbyBjb25mdGVzdCAtTzIgLXBp cGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcg LWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2Nh bC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAg ICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1ML3Vzci9sb2NhbC9saWIgIC1X bCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9s aWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vz ci9sb2NhbC9saWIvbGlieHVsICAgICBjb25mdGVzdC5jIC1sWDExIC1sWDEx ICAgMT4mNQ0KY29uZmlndXJlOjEwNTE2OiBjaGVja2luZyBmb3IgWGV4dEFk ZERpc3BsYXkgaW4gLWxYZXh0DQpjb25maWd1cmU6MTA1MzU6IGNjIC1vIGNv bmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0 cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAg ICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNs dWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgLUwvdXNy L2xvY2FsL2xpYiAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwg LUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2FsL2xpYi9uc3Mg LVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAgIGNvbmZ0ZXN0 LmMgLWxYZXh0IC1sWDExICAgMT4mNQ0KY29uZmlndXJlOjEwNTU4OiBjaGVj a2luZyBmb3IgWHRGcmVlIGluIC1sWHQNCmNvbmZpZ3VyZToxMDU3NzogY2Mg LW8gY29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1m bm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRl ICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2Fs L2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAt TC91c3IvbG9jYWwvbGliICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xp Ynh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGli L25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgY29u ZnRlc3QuYyAtbFh0ICAgMT4mNQ0KY29uZmlndXJlOjEwNzMxOiBjaGVja2lu ZyBmb3IgWFNobUNyZWF0ZUltYWdlIGluIC1sWGV4dA0KY29uZmlndXJlOjEw NzUwOiBjYyAtbyBjb25mdGVzdCAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxp YXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xvY2Fs L2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91 c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUgIC1ML3Vzci9sb2NhbC9saWIgIC1XbCwtcnBhdGgsL3Vzci9sb2Nh bC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIgICAgICAgIC1ML3Vzci9s b2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVs ICAgICBjb25mdGVzdC5jIC1sWGV4dCAtbFgxMSAgLWxYZXh0ICAxPiY1DQpj b25maWd1cmU6MTA3NzM6IGNoZWNraW5nIGZvciBYMTEvZXh0ZW5zaW9ucy9z Y3Juc2F2ZXIuaA0KY29uZmlndXJlOjEwNzg1OiBjYyAtYyAtTzIgLXBpcGUg LWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlz eXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9p bmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAg LUkvdXNyL2xvY2FsL2luY2x1ZGUgY29uZnRlc3QuYyAxPiY1DQpjb25maWd1 cmU6MTA4MDA6IGNoZWNraW5nIGZvciBYU2NyZWVuU2F2ZXJRdWVyeUluZm8g aW4gLWxYc3MNCmNvbmZpZ3VyZToxMDgxOTogY2MgLW8gY29uZnRlc3QgLU8y IC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFz aW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3Iv bG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25z cyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtTC91c3IvbG9jYWwvbGli ICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9j YWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRo LC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgY29uZnRlc3QuYyAtbFhzcyAt bFhleHQgLWxYMTEgICAxPiY1DQpjb25maWd1cmU6MTA4OTE6IGNoZWNraW5n IGZvciBmcmVldHlwZS1jb25maWcNCmNvbmZpZ3VyZToxMDkyNzogY2hlY2tp bmcgZm9yIEZyZWVUeXBlIC0gdmVyc2lvbiA+PSA2LjEuMA0KY29uZmlndXJl OjExMDUxOiBjaGVja2luZyBmb3IgRlRfQml0bWFwX1NpemUueV9wcGVtDQpj b25maWd1cmU6MTEwNjY6IGNjIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1h bGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtSS91c3IvbG9jYWwvaW5j bHVkZS9mcmVldHlwZTIgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLWlzeXN0ZW0v dXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRl L25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNy L2xvY2FsL2luY2x1ZGUgY29uZnRlc3QuYyAxPiY1DQpjb25maWd1cmU6MTEw OTI6IGNoZWNraW5nIGZvciBGVF9HbHlwaFNsb3RfRW1ib2xkZW4NCmNvbmZp Z3VyZToxMTEyMDogY2MgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3Ry aWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1JL3Vzci9sb2Nh bC9pbmNsdWRlL2ZyZWV0eXBlMiAtSS91c3IvbG9jYWwvaW5jbHVkZSAtaXN5 c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAt SS91c3IvbG9jYWwvaW5jbHVkZSAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xp Yi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2Fs L2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAg IGNvbmZ0ZXN0LmMgIC1ML3Vzci9sb2NhbC9saWIgLWxmcmVldHlwZSAtbHog LWxiejIgMT4mNQ0KY29uZmlndXJlOjExMDkyOiBjaGVja2luZyBmb3IgRlRf TG9hZF9TZm50X1RhYmxlDQpjb25maWd1cmU6MTExMjA6IGNjIC1vIGNvbmZ0 ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmlj dC1hbGlhc2luZyAtSS91c3IvbG9jYWwvaW5jbHVkZS9mcmVldHlwZTIgLUkv dXNyL2xvY2FsL2luY2x1ZGUgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUg ICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwv aW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1X bCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9s aWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vz ci9sb2NhbC9saWIvbGlieHVsICAgICBjb25mdGVzdC5jICAtTC91c3IvbG9j YWwvbGliIC1sZnJlZXR5cGUgLWx6IC1sYnoyIDE+JjUNCmNvbmZpZ3VyZTox MTA5MjogY2hlY2tpbmcgZm9yIEZUX1NlbGVjdF9TaXplDQpjb25maWd1cmU6 MTExMjA6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1h bGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtSS91c3IvbG9jYWwvaW5j bHVkZS9mcmVldHlwZTIgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLWlzeXN0ZW0v dXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRl L25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNy L2xvY2FsL2luY2x1ZGUgIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGli eHVsIC1ML3Vzci9sb2NhbC9saWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIv bnNzIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsICAgICBjb25m dGVzdC5jICAtTC91c3IvbG9jYWwvbGliIC1sZnJlZXR5cGUgLWx6IC1sYnoy IDE+JjUNCmNvbmZpZ3VyZToxMTE2NTogY2hlY2tpbmcgZm9yIHB0aHJlYWRf Y3JlYXRlIGluIC1scHRocmVhZHMNCmNjIC1vIGR1bW15IGR1bW15LmMgLU8y IC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFz aW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3Iv bG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25z cyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1scHRocmVhZHMgIC1XbCwt cnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIg ICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9s b2NhbC9saWIvbGlieHVsICAgICANCi91c3IvYmluL2xkOiBjYW5ub3QgZmlu ZCAtbHB0aHJlYWRzDQpjb25maWd1cmU6MTExODg6IGNoZWNraW5nIGZvciBw dGhyZWFkX2NyZWF0ZSBpbiAtbHB0aHJlYWQNCmNjIC1vIGR1bW15IGR1bW15 LmMgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0 LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAt SS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUv bnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1scHRocmVhZCAg LVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xvY2Fs L2xpYiAgICAgICAgLUwvdXNyL2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0aCwv dXNyL2xvY2FsL2xpYi9saWJ4dWwgICAgIA0KY29uZmlndXJlOjExMjkzOiBj aGVja2luZyB3aGV0aGVyIGNjIGFjY2VwdHMgLXB0aHJlYWQNCmNvbmZpZ3Vy ZToxMTM5OTogY2hlY2tpbmcgd2hldGhlciBjYyBuZWVkcyAtdHJhZGl0aW9u YWwNCmNvbmZpZ3VyZToxMTQwNjoxOTogZXJyb3I6IHNndHR5Lmg6IE5vIHN1 Y2ggZmlsZSBvciBkaXJlY3RvcnkNCmNvbmZpZ3VyZToxMTQyNDoyMDogZXJy b3I6IHRlcm1pby5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5DQpjb25m aWd1cmU6MTE0NDU6IGNoZWNraW5nIGZvciA4LWJpdCBjbGVhbiBtZW1jbXAN CmNvbmZpZ3VyZToxMTQ2MzogY2MgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1m bm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lz dGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5j bHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1J L3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhyZWFkICAtV2wsLXJwYXRoLC91c3Iv bG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAtTC91 c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xp Ynh1bCAgICAgY29uZnRlc3QuYyAgMT4mNQ0KY29uZmlndXJlOiBJbiBmdW5j dGlvbiAnbWFpbic6DQpjb25maWd1cmU6MTE0NTg6IHdhcm5pbmc6IGluY29t cGF0aWJsZSBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBidWlsdC1pbiBmdW5j dGlvbiAnZXhpdCcNCmNvbmZpZ3VyZToxMTQ4MzogY2hlY2tpbmcgZm9yIHJh bmRvbQ0KY29uZmlndXJlOjExNTExOiBjYyAtbyBjb25mdGVzdCAtTzIgLXBp cGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcg LWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2Nh bC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAg ICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLXB0aHJlYWQgIC1XbCwtcnBhdGgs L3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIgICAgICAg IC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9s aWIvbGlieHVsICAgICBjb25mdGVzdC5jICAxPiY1DQpjb25maWd1cmU6MTE0 ODM6IGNoZWNraW5nIGZvciBzdHJlcnJvcg0KY29uZmlndXJlOjExNTExOiBj YyAtbyBjb25mdGVzdCAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcg LWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1 ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9j YWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUg LXB0aHJlYWQgIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1M L3Vzci9sb2NhbC9saWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1X bCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsICAgICBjb25mdGVzdC5j ICAxPiY1DQpjb25maWd1cmU6MTE0ODM6IGNoZWNraW5nIGZvciBsY2hvd24N CmNvbmZpZ3VyZToxMTUxMTogY2MgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1m bm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lz dGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5j bHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1J L3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhyZWFkICAtV2wsLXJwYXRoLC91c3Iv bG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAtTC91 c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xp Ynh1bCAgICAgY29uZnRlc3QuYyAgMT4mNQ0KY29uZmlndXJlOjExNDgzOiBj aGVja2luZyBmb3IgZmNobW9kDQpjb25maWd1cmU6MTE1MTE6IGNjIC1vIGNv bmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0 cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAg ICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNs dWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSAtcHRocmVh ZCAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xv Y2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0 aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAgIGNvbmZ0ZXN0LmMgIDE+JjUN CmNvbmZpZ3VyZToxMTQ4MzogY2hlY2tpbmcgZm9yIHNucHJpbnRmDQpjb25m aWd1cmU6MTE1MTE6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0 cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91 c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUv bnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91c3Iv bG9jYWwvaW5jbHVkZSAtcHRocmVhZCAgLVdsLC1ycGF0aCwvdXNyL2xvY2Fs L2xpYi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNyL2xv Y2FsL2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwg ICAgIGNvbmZ0ZXN0LmMgIDE+JjUNCmNvbmZpZ3VyZToxMTQ5NTogd2Fybmlu ZzogY29uZmxpY3RpbmcgdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9uICdz bnByaW50ZicNCmNvbmZpZ3VyZToxMTQ4MzogY2hlY2tpbmcgZm9yIHN0YXR2 ZnMNCmNvbmZpZ3VyZToxMTUxMTogY2MgLW8gY29uZnRlc3QgLU8yIC1waXBl IC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1p c3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwv aW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAg IC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhyZWFkICAtV2wsLXJwYXRoLC91 c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAt TC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGli L2xpYnh1bCAgICAgY29uZnRlc3QuYyAgMT4mNQ0KY29uZmlndXJlOjExNDgz OiBjaGVja2luZyBmb3IgbWVtbW92ZQ0KY29uZmlndXJlOjExNTExOiBjYyAt byBjb25mdGVzdCAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZu by1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUg ICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwv aW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLXB0 aHJlYWQgIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vz ci9sb2NhbC9saWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwt cnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsICAgICBjb25mdGVzdC5jICAx PiY1DQpjb25maWd1cmU6MTE0OTU6IHdhcm5pbmc6IGNvbmZsaWN0aW5nIHR5 cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbiAnbWVtbW92ZScNCmNvbmZpZ3Vy ZToxMTQ4MzogY2hlY2tpbmcgZm9yIHJpbnQNCmNvbmZpZ3VyZToxMTUxMTog Y2MgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5n IC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNs dWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xv Y2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRl IC1wdGhyZWFkICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAt TC91c3IvbG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAt V2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgY29uZnRlc3Qu YyAgMT4mNQ0KY29uZmlndXJlOjExNDk1OiB3YXJuaW5nOiBjb25mbGljdGlu ZyB0eXBlcyBmb3IgYnVpbHQtaW4gZnVuY3Rpb24gJ3JpbnQnDQovdmFyL3Rt cC8vY2NpUENRQjQubygudGV4dCsweDcpOiBJbiBmdW5jdGlvbiBgbWFpbic6 DQo6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHJpbnQnDQpjb25maWd1cmU6 IGZhaWxlZCBwcm9ncmFtIHdhczoNCiNsaW5lIDExNDg4ICJjb25maWd1cmUi DQojaW5jbHVkZSAiY29uZmRlZnMuaCINCi8qIFN5c3RlbSBoZWFkZXIgdG8g ZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90 eXBlcywNCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIHJpbnQo KTsgYmVsb3cuICAqLw0KI2luY2x1ZGUgPGFzc2VydC5oPg0KLyogT3ZlcnJp ZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVy cm9yLiAgKi8NCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1h dGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzINCiAgICBidWlsdGluIGFu ZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBw bHkuICAqLw0KY2hhciByaW50KCk7DQoNCmludCBtYWluKCkgew0KDQovKiBU aGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3 aGljaCBpdCBpbXBsZW1lbnRzDQogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBF Tk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQNCiAg ICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBu YW1lIGlzIGFuIGFsaWFzLiAgKi8NCiNpZiBkZWZpbmVkIChfX3N0dWJfcmlu dCkgfHwgZGVmaW5lZCAoX19zdHViX19fcmludCkNCmNob2tlIG1lDQojZWxz ZQ0KcmludCgpOw0KI2VuZGlmDQoNCjsgcmV0dXJuIDA7IH0NCmNvbmZpZ3Vy ZToxMTQ4MzogY2hlY2tpbmcgZm9yIHN0YXQ2NA0KY29uZmlndXJlOjExNTEx OiBjYyAtbyBjb25mdGVzdCAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNp bmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2lu Y2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3Iv bG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1 ZGUgLXB0aHJlYWQgIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVs IC1ML3Vzci9sb2NhbC9saWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNz IC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsICAgICBjb25mdGVz dC5jICAxPiY1DQovdmFyL3RtcC8vY2NmTlhtMzMubygudGV4dCsweDcpOiBJ biBmdW5jdGlvbiBgbWFpbic6DQo6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8g YHN0YXQ2NCcNCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOg0KI2xp bmUgMTE0ODggImNvbmZpZ3VyZSINCiNpbmNsdWRlICJjb25mZGVmcy5oIg0K LyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQg aG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLA0KICAgIHdoaWNoIGNhbiBjb25m bGljdCB3aXRoIGNoYXIgc3RhdDY0KCk7IGJlbG93LiAgKi8NCiNpbmNsdWRl IDxhc3NlcnQuaD4NCi8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHBy b3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovDQovKiBXZSB1c2UgY2hh ciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2Yg YSBnY2MyDQogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJv dG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8NCmNoYXIgc3RhdDY0KCk7 DQoNCmludCBtYWluKCkgew0KDQovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZp bmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzDQog ICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9u cyBhcmUgYWN0dWFsbHkgbmFtZWQNCiAgICBzb21ldGhpbmcgc3RhcnRpbmcg d2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8N CiNpZiBkZWZpbmVkIChfX3N0dWJfc3RhdDY0KSB8fCBkZWZpbmVkIChfX3N0 dWJfX19zdGF0NjQpDQpjaG9rZSBtZQ0KI2Vsc2UNCnN0YXQ2NCgpOw0KI2Vu ZGlmDQoNCjsgcmV0dXJuIDA7IH0NCmNvbmZpZ3VyZToxMTQ4MzogY2hlY2tp bmcgZm9yIGxzdGF0NjQNCmNvbmZpZ3VyZToxMTUxMTogY2MgLW8gY29uZnRl c3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0 LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAt SS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUv bnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhyZWFkICAt V2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwv bGliICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91 c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgY29uZnRlc3QuYyAgMT4mNQ0KL3Zh ci90bXAvL2NjWGFGUE5WLm8oLnRleHQrMHg3KTogSW4gZnVuY3Rpb24gYG1h aW4nOg0KOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBsc3RhdDY0Jw0KY29u ZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6DQojbGluZSAxMTQ4OCAiY29u ZmlndXJlIg0KI2luY2x1ZGUgImNvbmZkZWZzLmgiDQovKiBTeXN0ZW0gaGVh ZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3 IHByb3RvdHlwZXMsDQogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hh ciBsc3RhdDY0KCk7IGJlbG93LiAgKi8NCiNpbmNsdWRlIDxhc3NlcnQuaD4N Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBh dm9pZCBhbiBlcnJvci4gICovDQovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGlu dCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyDQogICAg YnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxk IHN0aWxsIGFwcGx5LiAgKi8NCmNoYXIgbHN0YXQ2NCgpOw0KDQppbnQgbWFp bigpIHsNCg0KLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZv ciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cw0KICAgIHRvIGFsd2F5 cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVh bGx5IG5hbWVkDQogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5k IHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovDQojaWYgZGVmaW5l ZCAoX19zdHViX2xzdGF0NjQpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2xzdGF0 NjQpDQpjaG9rZSBtZQ0KI2Vsc2UNCmxzdGF0NjQoKTsNCiNlbmRpZg0KDQo7 IHJldHVybiAwOyB9DQpjb25maWd1cmU6MTE0ODM6IGNoZWNraW5nIGZvciB0 cnVuY2F0ZTY0DQpjb25maWd1cmU6MTE1MTE6IGNjIC1vIGNvbmZ0ZXN0IC1P MiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlh c2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNy L2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9u c3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSAtcHRocmVhZCAgLVdsLC1y cGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAg ICAgICAgLUwvdXNyL2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xv Y2FsL2xpYi9saWJ4dWwgICAgIGNvbmZ0ZXN0LmMgIDE+JjUNCi92YXIvdG1w Ly9jY0ZhU1VBNi5vKC50ZXh0KzB4Nyk6IEluIGZ1bmN0aW9uIGBtYWluJzoN CjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgdHJ1bmNhdGU2NCcNCmNvbmZp Z3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOg0KI2xpbmUgMTE0ODggImNvbmZp Z3VyZSINCiNpbmNsdWRlICJjb25mZGVmcy5oIg0KLyogU3lzdGVtIGhlYWRl ciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBw cm90b3R5cGVzLA0KICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIg dHJ1bmNhdGU2NCgpOyBiZWxvdy4gICovDQojaW5jbHVkZSA8YXNzZXJ0Lmg+ DQovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8g YXZvaWQgYW4gZXJyb3IuICAqLw0KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBp bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMg0KICAg IGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3Vs ZCBzdGlsbCBhcHBseS4gICovDQpjaGFyIHRydW5jYXRlNjQoKTsNCg0KaW50 IG1haW4oKSB7DQoNCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhp cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMNCiAgICB0byBh bHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBh Y3R1YWxseSBuYW1lZA0KICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9f IGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLw0KI2lmIGRl ZmluZWQgKF9fc3R1Yl90cnVuY2F0ZTY0KSB8fCBkZWZpbmVkIChfX3N0dWJf X190cnVuY2F0ZTY0KQ0KY2hva2UgbWUNCiNlbHNlDQp0cnVuY2F0ZTY0KCk7 DQojZW5kaWYNCg0KOyByZXR1cm4gMDsgfQ0KY29uZmlndXJlOjExNDgzOiBj aGVja2luZyBmb3Igc3RhdHZmczY0DQpjb25maWd1cmU6MTE1MTE6IGNjIC1v IGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5v LXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAg ICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9p bmNsdWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSAtcHRo cmVhZCAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgLUwvdXNy L2xvY2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2FsL2xpYi9uc3MgLVdsLC1y cGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAgIGNvbmZ0ZXN0LmMgIDE+ JjUNCi92YXIvdG1wLy9jY1FjQUhqVC5vKC50ZXh0KzB4Nyk6IEluIGZ1bmN0 aW9uIGBtYWluJzoNCjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc3RhdHZm czY0Jw0KY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6DQojbGluZSAx MTQ4OCAiY29uZmlndXJlIg0KI2luY2x1ZGUgImNvbmZkZWZzLmgiDQovKiBT eXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3Bl ZnVsbHkgZmV3IHByb3RvdHlwZXMsDQogICAgd2hpY2ggY2FuIGNvbmZsaWN0 IHdpdGggY2hhciBzdGF0dmZzNjQoKTsgYmVsb3cuICAqLw0KI2luY2x1ZGUg PGFzc2VydC5oPg0KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJv dG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8NCi8qIFdlIHVzZSBjaGFy IGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBh IGdjYzINCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90 b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLw0KY2hhciBzdGF0dmZzNjQo KTsNCg0KaW50IG1haW4oKSB7DQoNCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRl ZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMN CiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rp b25zIGFyZSBhY3R1YWxseSBuYW1lZA0KICAgIHNvbWV0aGluZyBzdGFydGlu ZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAq Lw0KI2lmIGRlZmluZWQgKF9fc3R1Yl9zdGF0dmZzNjQpIHx8IGRlZmluZWQg KF9fc3R1Yl9fX3N0YXR2ZnM2NCkNCmNob2tlIG1lDQojZWxzZQ0Kc3RhdHZm czY0KCk7DQojZW5kaWYNCg0KOyByZXR1cm4gMDsgfQ0KY29uZmlndXJlOjEx NDgzOiBjaGVja2luZyBmb3Igc2V0YnVmDQpjb25maWd1cmU6MTE1MTE6IGNj IC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAt Zm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVk ZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2Nh bC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSAt cHRocmVhZCAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgLUwv dXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2FsL2xpYi9uc3MgLVds LC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAgIGNvbmZ0ZXN0LmMg IDE+JjUNCmNvbmZpZ3VyZToxMTQ4MzogY2hlY2tpbmcgZm9yIGlzYXR0eQ0K Y29uZmlndXJlOjExNTExOiBjYyAtbyBjb25mdGVzdCAtTzIgLXBpcGUgLWZu by1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWlzeXN0 ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNs dWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkv dXNyL2xvY2FsL2luY2x1ZGUgLXB0aHJlYWQgIC1XbCwtcnBhdGgsL3Vzci9s b2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIgICAgICAgIC1ML3Vz ci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGli eHVsICAgICBjb25mdGVzdC5jICAxPiY1DQpjb25maWd1cmU6MTE1Mzg6IGNo ZWNraW5nIGZvciBmbG9ja2ZpbGUNCmNvbmZpZ3VyZToxMTU2NjogY2MgLW8g Y29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8t c3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAg ICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhy ZWFkICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3Iv bG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJw YXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgY29uZnRlc3QuYyAgMT4m NQ0KY29uZmlndXJlOjExNTM4OiBjaGVja2luZyBmb3IgZ2V0cGFnZXNpemUN CmNvbmZpZ3VyZToxMTU2NjogY2MgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1m bm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lz dGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5j bHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1J L3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhyZWFkICAtV2wsLXJwYXRoLC91c3Iv bG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAtTC91 c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xp Ynh1bCAgICAgY29uZnRlc3QuYyAgMT4mNQ0KY29uZmlndXJlOjExNTkzOiBj aGVja2luZyBmb3IgbG9jYWx0aW1lX3INCmNvbmZpZ3VyZToxMTYyMTogY2Mg LW8gY29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1m bm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRl ICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2Fs L2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1w dGhyZWFkICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91 c3IvbG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2ws LXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgY29uZnRlc3QuYyAg MT4mNQ0KY29uZmlndXJlOjExNTkzOiBjaGVja2luZyBmb3Igc3RydG9rX3IN CmNvbmZpZ3VyZToxMTYyMTogY2MgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1m bm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lz dGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5j bHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1J L3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhyZWFkICAtV2wsLXJwYXRoLC91c3Iv bG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAtTC91 c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xp Ynh1bCAgICAgY29uZnRlc3QuYyAgMT4mNQ0KY29uZmlndXJlOjExNjQ3OiBj aGVja2luZyBmb3IgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMpDQpj b25maWd1cmU6MTE2NjM6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5v LXN0cmljdC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3Rl bS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1 ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91 c3IvbG9jYWwvaW5jbHVkZSAtcHRocmVhZCAgLVdsLC1ycGF0aCwvdXNyL2xv Y2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNy L2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4 dWwgICAgICBjb25mdGVzdC5jICAxPiY1DQpjb25maWd1cmU6MTE3MDA6IGNo ZWNraW5nIGZvciB3Y3J0b21iDQpjb25maWd1cmU6MTE3MTI6IGMrKyAtbyBj b25mdGVzdCAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1l eGNlcHRpb25zIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mc2hvcnQtd2NoYXIg LWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2Nh bC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAg ICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLXB0aHJlYWQgIC1XbCwtcnBhdGgs L3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIgICAgICAg IC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9s aWIvbGlieHVsICAgICAgY29uZnRlc3QuQyAgMT4mNQ0KY29uZmlndXJlOjEx NzMyOiBjaGVja2luZyBmb3IgbWJydG93Yw0KY29uZmlndXJlOjExNzQ0OiBj KysgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5n IC1mbm8tZXhjZXB0aW9ucyAtZm5vLXN0cmljdC1hbGlhc2luZyAtZnNob3J0 LXdjaGFyIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91 c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNz L25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhyZWFkICAtV2ws LXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGli ICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3Iv bG9jYWwvbGliL2xpYnh1bCAgICAgIGNvbmZ0ZXN0LkMgIDE+JjUNCmNvbmZp Z3VyZToxMTc3MzogY2hlY2tpbmcgZm9yIHJlc19uaW5pdCgpDQpjb25maWd1 cmU6MTE3OTA6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmlj dC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3Iv bG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNz IC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9j YWwvaW5jbHVkZSAtcHRocmVhZCAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xp Yi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2Fs L2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAg ICBjb25mdGVzdC5jICAxPiY1DQpJbiBmaWxlIGluY2x1ZGVkIGZyb20gY29u ZmlndXJlOjExNzgzOg0KL3Vzci9pbmNsdWRlL3Jlc29sdi5oOjE2MTogZXJy b3I6IGFycmF5IHR5cGUgaGFzIGluY29tcGxldGUgZWxlbWVudCB0eXBlDQov dXNyL2luY2x1ZGUvcmVzb2x2Lmg6MTc1OiBlcnJvcjogZmllbGQgJ2FkZHIn IGhhcyBpbmNvbXBsZXRlIHR5cGUNCi91c3IvaW5jbHVkZS9yZXNvbHYuaDox OTk6IGVycm9yOiBmaWVsZCAnc2luJyBoYXMgaW5jb21wbGV0ZSB0eXBlDQpj b25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoNCiNsaW5lIDExNzc4ICJj b25maWd1cmUiDQojaW5jbHVkZSAiY29uZmRlZnMuaCINCg0KICAgICAgICAj aWZkZWYgbGludXgNCiAgICAgICAgI2RlZmluZSBfQlNEX1NPVVJDRSAxDQog ICAgICAgICNlbmRpZg0KICAgICAgICAjaW5jbHVkZSA8cmVzb2x2Lmg+DQog ICAgICAgIA0KaW50IG1haW4oKSB7DQppbnQgZm9vID0gcmVzX25pbml0KCZf cmVzKTsNCjsgcmV0dXJuIDA7IH0NCmNvbmZpZ3VyZToxMTgyMDogY2hlY2tp bmcgZm9yIGdudV9nZXRfbGliY192ZXJzaW9uKCkNCmNvbmZpZ3VyZToxMTgz NjogYysrIC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlh c2luZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZz aG9ydC13Y2hhciAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAg LUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRl L25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSAtcHRocmVhZCAg LVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xvY2Fs L2xpYiAgICAgICAgLUwvdXNyL2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0aCwv dXNyL2xvY2FsL2xpYi9saWJ4dWwgICAgICBjb25mdGVzdC5DICAxPiY1DQpj b25maWd1cmU6IEluIGZ1bmN0aW9uICdpbnQgbWFpbigpJzoNCmNvbmZpZ3Vy ZToxMTgzMjogZXJyb3I6ICdnbnVfZ2V0X2xpYmNfdmVyc2lvbicgd2FzIG5v dCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlDQpjb25maWd1cmU6IGZhaWxlZCBw cm9ncmFtIHdhczoNCiNsaW5lIDExODI1ICJjb25maWd1cmUiDQojaW5jbHVk ZSAiY29uZmRlZnMuaCINCg0KICAgICAgICAjaWZkZWYgSEFWRV9HTlVfTElC Q19WRVJTSU9OX0gNCiAgICAgICAgI2luY2x1ZGUgPGdudS9saWJjLXZlcnNp b24uaD4NCiAgICAgICAgI2VuZGlmDQogICAgICAgIA0KaW50IG1haW4oKSB7 DQpjb25zdCBjaGFyICpnbGliY192ZXJzaW9uID0gZ251X2dldF9saWJjX3Zl cnNpb24oKTsNCjsgcmV0dXJuIDA7IH0NCmNvbmZpZ3VyZToxMTg2NTogY2hl Y2tpbmcgZm9yIGljb252IGluIC1sYw0KY29uZmlndXJlOjExODg3OiBjKysg LW8gY29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1m bm8tZXhjZXB0aW9ucyAtZm5vLXN0cmljdC1hbGlhc2luZyAtZnNob3J0LXdj aGFyIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3Iv bG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25z cyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhyZWFkICAtV2wsLXJw YXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGliICAg ICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3IvbG9j YWwvbGliL2xpYnh1bCAgICAgIGNvbmZ0ZXN0LkMgLWxjICAgMT4mNQ0KL3Zh ci90bXAvL2NjazByTnZKLm8oLnRleHQrMHg1KTogSW4gZnVuY3Rpb24gYG1h aW4nOg0KOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBpY29udicNCmNvbmZp Z3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOg0KI2xpbmUgMTE4NzMgImNvbmZp Z3VyZSINCiNpbmNsdWRlICJjb25mZGVmcy5oIg0KLyogT3ZlcnJpZGUgYW55 IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAg Ki8NCiNpZmRlZiBfX2NwbHVzcGx1cw0KZXh0ZXJuICJDIg0KI2VuZGlmDQov KiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0 dXJuIHR5cGUgb2YgYSBnY2MyDQogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMg YXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8NCmNo YXIgaWNvbnYoKTsNCg0KaW50IG1haW4oKSB7DQppY29udigpDQo7IHJldHVy biAwOyB9DQpjb25maWd1cmU6MTE5MDY6IGNoZWNraW5nIGZvciBpY29udiBp biAtbGljb252DQpjb25maWd1cmU6MTE5Mjg6IGMrKyAtbyBjb25mdGVzdCAt TzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1leGNlcHRpb25z IC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mc2hvcnQtd2NoYXIgLWlzeXN0ZW0v dXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRl L25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNy L2xvY2FsL2luY2x1ZGUgLXB0aHJlYWQgIC1XbCwtcnBhdGgsL3Vzci9sb2Nh bC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIgICAgICAgIC1ML3Vzci9s b2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVs ICAgICAgY29uZnRlc3QuQyAtbGljb252ICAgMT4mNQ0KY29uZmlndXJlOjEx OTk2OiBjaGVja2luZyBmb3IgaWNvbnYoKQ0KY29uZmlndXJlOjEyMDE1OiBj KysgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5n IC1mbm8tZXhjZXB0aW9ucyAtZm5vLXN0cmljdC1hbGlhc2luZyAtZnNob3J0 LXdjaGFyIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91 c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNz L25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhyZWFkICAtV2ws LXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGli ICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3Iv bG9jYWwvbGliL2xpYnh1bCAgICAgIGNvbmZ0ZXN0LkMgICAtbGljb252IDE+ JjUNCmNvbmZpZ3VyZToxMjAzOTogY2hlY2tpbmcgZm9yIGljb252KCkgd2l0 aCBjb25zdCBpbnB1dA0KY29uZmlndXJlOjEyMDU5OiBjKysgLWMgLU8yIC1w aXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tZXhjZXB0aW9ucyAtZm5v LXN0cmljdC1hbGlhc2luZyAtZnNob3J0LXdjaGFyIC1pc3lzdGVtL3Vzci9s b2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3Mg LUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2Nh bC9pbmNsdWRlIGNvbmZ0ZXN0LkMgMT4mNQ0KY29uZmlndXJlOjEyMDg4OiBj aGVja2luZyBmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVQNCmNvbmZpZ3Vy ZToxMjEwMDogYysrIC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmlj dC1hbGlhc2luZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNp bmcgLWZzaG9ydC13Y2hhciAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAg ICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9p bmNsdWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSAtcHRo cmVhZCAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgLUwvdXNy L2xvY2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2FsL2xpYi9uc3MgLVdsLC1y cGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAgICBjb25mdGVzdC5DICAx PiY1DQpjb25maWd1cmU6MTIxMzI6IGNoZWNraW5nIGZvciBhbiBpbXBsZW1l bnRhdGlvbiBvZiB2YV9jb3B5KCkNCmNvbmZpZ3VyZToxMjE1NjogY2MgLW8g Y29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8t c3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAg ICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhy ZWFkICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3Iv bG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJw YXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgIGNvbmZ0ZXN0LmMgIDE+ JjUNCmNvbmZpZ3VyZTogSW4gZnVuY3Rpb24gJ2YnOg0KY29uZmlndXJlOjEy MTUwOiB3YXJuaW5nOiBpbmNvbXBhdGlibGUgaW1wbGljaXQgZGVjbGFyYXRp b24gb2YgYnVpbHQtaW4gZnVuY3Rpb24gJ2V4aXQnDQpjb25maWd1cmU6MTIx NzM6IGNoZWNraW5nIGZvciBhbiBpbXBsZW1lbnRhdGlvbiBvZiBfX3ZhX2Nv cHkoKQ0KY29uZmlndXJlOjEyMTk3OiBjYyAtbyBjb25mdGVzdCAtTzIgLXBp cGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcg LWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2Nh bC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAg ICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLXB0aHJlYWQgIC1XbCwtcnBhdGgs L3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIgICAgICAg IC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9s aWIvbGlieHVsICAgICAgY29uZnRlc3QuYyAgMT4mNQ0KY29uZmlndXJlOiBJ biBmdW5jdGlvbiAnZic6DQpjb25maWd1cmU6MTIxOTE6IHdhcm5pbmc6IGlu Y29tcGF0aWJsZSBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBidWlsdC1pbiBm dW5jdGlvbiAnZXhpdCcNCmNvbmZpZ3VyZToxMjIxNDogY2hlY2tpbmcgd2hl dGhlciB2YV9saXN0cyBjYW4gYmUgY29waWVkIGJ5IHZhbHVlDQpjb25maWd1 cmU6MTIyMzg6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmlj dC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3Iv bG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNz IC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9j YWwvaW5jbHVkZSAtcHRocmVhZCAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xp Yi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2Fs L2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAg ICBjb25mdGVzdC5jICAxPiY1DQpjb25maWd1cmU6IEluIGZ1bmN0aW9uICdm JzoNCmNvbmZpZ3VyZToxMjIzMDogZXJyb3I6IGluY29tcGF0aWJsZSB0eXBl cyBpbiBhc3NpZ25tZW50DQpjb25maWd1cmU6MTIyMzI6IHdhcm5pbmc6IGlu Y29tcGF0aWJsZSBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBidWlsdC1pbiBm dW5jdGlvbiAnZXhpdCcNCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2Fz Og0KI2xpbmUgMTIyMjQgImNvbmZpZ3VyZSINCiNpbmNsdWRlICJjb25mZGVm cy5oIg0KDQogICAgICAgICNpbmNsdWRlIDxzdGRhcmcuaD4NCiAgICAgICAg dm9pZCBmIChpbnQgaSwgLi4uKSB7DQogICAgICAgICAgICB2YV9saXN0IGFy Z3MxLCBhcmdzMjsNCiAgICAgICAgICAgIHZhX3N0YXJ0IChhcmdzMSwgaSk7 DQogICAgICAgICAgICBhcmdzMiA9IGFyZ3MxOw0KICAgICAgICAgICAgaWYg KHZhX2FyZyAoYXJnczIsIGludCkgIT0gNDIgfHwgdmFfYXJnIChhcmdzMSwg aW50KSAhPSA0MikNCiAgICAgICAgICAgICAgICBleGl0ICgxKTsNCiAgICAg ICAgICAgIHZhX2VuZCAoYXJnczEpOyB2YV9lbmQgKGFyZ3MyKTsNCiAgICAg ICAgfQ0KICAgICAgICBpbnQgbWFpbigpIHsgZiAoMCwgNDIpOyByZXR1cm4g MDsgfQ0KY29uZmlndXJlOjEyMzM2OiBjaGVja2luZyBmb3IgbW9kZXJuIEMr KyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiBzeW50YXggc3VwcG9ydA0KY29u ZmlndXJlOjEyMzUxOiBjKysgLWMgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFs aWFzaW5nIC1mbm8tZXhjZXB0aW9ucyAtZm5vLXN0cmljdC1hbGlhc2luZyAt ZnNob3J0LXdjaGFyIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAg ICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1 ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIGNvbmZ0ZXN0 LkMgMT4mNQ0KY29uZmlndXJlOjEyMzczOiBjaGVja2luZyB3aGV0aGVyIHBh cnRpYWwgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd29ya3MNCmNvbmZpZ3Vy ZToxMjM4NjogYysrIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2lu ZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZzaG9y dC13Y2hhciAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkv dXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25z cy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSBjb25mdGVzdC5DIDE+ JjUNCmNvbmZpZ3VyZToxMjQwNzogY2hlY2tpbmcgd2hldGhlciB0aGUgQysr ICJ1c2luZyIga2V5d29yZCByZXNvbHZlcyBhbWJpZ3VpdHkNCmNvbmZpZ3Vy ZToxMjQyODogYysrIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2lu ZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZzaG9y dC13Y2hhciAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkv dXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25z cy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSBjb25mdGVzdC5DIDE+ JjUNCmNvbmZpZ3VyZToxMjQ0OTogY2hlY2tpbmcgZm9yIEMrKyBkeW5hbWlj X2Nhc3QgdG8gdm9pZCoNCmNvbmZpZ3VyZToxMjQ3NjogYysrIC1vIGNvbmZ0 ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWV4Y2Vw dGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZzaG9ydC13Y2hhciAtaXN5 c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAt SS91c3IvbG9jYWwvaW5jbHVkZSAtcHRocmVhZCAgLVdsLC1ycGF0aCwvdXNy L2xvY2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwv dXNyL2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9s aWJ4dWwgICAgICBjb25mdGVzdC5DICAxPiY1DQpjb25maWd1cmU6MTI1MDA6 IGNoZWNraW5nIHdoZXRoZXIgQysrIHJlcXVpcmVzIGltcGxlbWVudGF0aW9u IG9mIHVudXNlZCB2aXJ0dWFsIG1ldGhvZHMNCmNvbmZpZ3VyZToxMjUxMjog YysrIC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2lu ZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZzaG9y dC13Y2hhciAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkv dXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25z cy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSAtcHRocmVhZCAgLVds LC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xp YiAgICAgICAgLUwvdXNyL2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNy L2xvY2FsL2xpYi9saWJ4dWwgICAgICBjb25mdGVzdC5DICAxPiY1DQpjb25m aWd1cmU6MTI1MzU6IGNoZWNraW5nIGZvciB0cm91YmxlIGNvbXBhcmluZyB0 byB6ZXJvIG5lYXIgc3RkOjpvcGVyYXRvciE9KCkNCmNvbmZpZ3VyZToxMjU1 MTogYysrIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5v LWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZzaG9ydC13Y2hh ciAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xv Y2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3Mg ICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSBjb25mdGVzdC5DIDE+JjUNCmNv bmZpZ3VyZToxMjU3ODogY2hlY2tpbmcgZm9yIF9fdGhyZWFkIGtleXdvcmQg Zm9yIFRMUyB2YXJpYWJsZXMNCmNvbmZpZ3VyZToxMjU5MDogYysrIC1vIGNv bmZ0ZXN0IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWV4 Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZzaG9ydC13Y2hhciAt aXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2Fs L2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAg ICAtSS91c3IvbG9jYWwvaW5jbHVkZSAtcHRocmVhZCAgLVdsLC1ycGF0aCwv dXNyL2xvY2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAg LUwvdXNyL2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xp Yi9saWJ4dWwgICAgICAtZlBJQyAtc2hhcmVkIC1XbCwteixkZWZzICBjb25m dGVzdC5DICAxPiY1DQpjb25maWd1cmU6MTI2Mjc6IGNoZWNraW5nIGZvciBt YWxsb2MuaA0KY29uZmlndXJlOjEyNjYyOiBjaGVja2luZyBmb3IgbWFsbG9j L21hbGxvYy5oDQpjb25maWd1cmU6MTI2NzQ6IGMrKyAtYyAtTzIgLXBpcGUg LWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1leGNlcHRpb25zIC1mbm8tc3Ry aWN0LWFsaWFzaW5nIC1mc2hvcnQtd2NoYXIgLWlzeXN0ZW0vdXNyL2xvY2Fs L2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91 c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUgY29uZnRlc3QuQyAxPiY1DQpjb25maWd1cmU6MTI2Njg6Mjc6IGVy cm9yOiBtYWxsb2MvbWFsbG9jLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rv cnkNCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOg0KI2xpbmUgMTI2 NjcgImNvbmZpZ3VyZSINCiNpbmNsdWRlICJjb25mZGVmcy5oIg0KI2luY2x1 ZGUgPG1hbGxvYy9tYWxsb2MuaD4NCmludCBtYWluKCkgew0KDQo7IHJldHVy biAwOyB9DQpjb25maWd1cmU6MTI2OTc6IGNoZWNraW5nIGZvciBzeXMvbWFs bG9jLmgNCmNvbmZpZ3VyZToxMjcwOTogYysrIC1jIC1PMiAtcGlwZSAtZm5v LXN0cmljdC1hbGlhc2luZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3Qt YWxpYXNpbmcgLWZzaG9ydC13Y2hhciAtaXN5c3RlbS91c3IvbG9jYWwvaW5j bHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9s b2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVk ZSBjb25mdGVzdC5DIDE+JjUNCmNvbmZpZ3VyZToxMjc0MjogY2hlY2tpbmcg Zm9yIHN0cm5kdXANCmNvbmZpZ3VyZToxMjc3MzogYysrIC1vIGNvbmZ0ZXN0 IC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWV4Y2VwdGlv bnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZzaG9ydC13Y2hhciAtaXN5c3Rl bS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1 ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91 c3IvbG9jYWwvaW5jbHVkZSAtcHRocmVhZCAgLVdsLC1ycGF0aCwvdXNyL2xv Y2FsL2xpYi9saWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNy L2xvY2FsL2xpYi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4 dWwgICAgICBjb25mdGVzdC5DICAxPiY1DQpjb25maWd1cmU6MTI3NDI6IGNo ZWNraW5nIGZvciBwb3NpeF9tZW1hbGlnbg0KY29uZmlndXJlOjEyNzczOiBj KysgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5n IC1mbm8tZXhjZXB0aW9ucyAtZm5vLXN0cmljdC1hbGlhc2luZyAtZnNob3J0 LXdjaGFyIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91 c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNz L25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhyZWFkICAtV2ws LXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3IvbG9jYWwvbGli ICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJwYXRoLC91c3Iv bG9jYWwvbGliL2xpYnh1bCAgICAgIGNvbmZ0ZXN0LkMgIDE+JjUNCmNvbmZp Z3VyZToxMjc0MjogY2hlY2tpbmcgZm9yIG1lbWFsaWduDQpjb25maWd1cmU6 MTI3NzM6IGMrKyAtbyBjb25mdGVzdCAtTzIgLXBpcGUgLWZuby1zdHJpY3Qt YWxpYXNpbmcgLWZuby1leGNlcHRpb25zIC1mbm8tc3RyaWN0LWFsaWFzaW5n IC1mc2hvcnQtd2NoYXIgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAg ICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5j bHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLXB0aHJl YWQgIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9s b2NhbC9saWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBh dGgsL3Vzci9sb2NhbC9saWIvbGlieHVsICAgICAgY29uZnRlc3QuQyAgMT4m NQ0KL3Zhci90bXAvL2NjS2hDTFVNLm8oLnRleHQrMHg1KTogSW4gZnVuY3Rp b24gYG1haW4nOg0KOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtZW1hbGln bicNCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOg0KI2xpbmUgMTI3 NDcgImNvbmZpZ3VyZSINCiNpbmNsdWRlICJjb25mZGVmcy5oIg0KLyogU3lz dGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1 bGx5IGZldyBwcm90b3R5cGVzLA0KICAgIHdoaWNoIGNhbiBjb25mbGljdCB3 aXRoIGNoYXIgbWVtYWxpZ24oKTsgYmVsb3cuICAqLw0KI2luY2x1ZGUgPGFz c2VydC5oPg0KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90 eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8NCiNpZmRlZiBfX2NwbHVzcGx1 cw0KZXh0ZXJuICJDIg0KI2VuZGlmDQovKiBXZSB1c2UgY2hhciBiZWNhdXNl IGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyDQog ICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdv dWxkIHN0aWxsIGFwcGx5LiAgKi8NCmNoYXIgbWVtYWxpZ24oKTsNCg0KaW50 IG1haW4oKSB7DQoNCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhp cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMNCiAgICB0byBh bHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBh Y3R1YWxseSBuYW1lZA0KICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9f IGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLw0KI2lmIGRl ZmluZWQgKF9fc3R1Yl9tZW1hbGlnbikgfHwgZGVmaW5lZCAoX19zdHViX19f bWVtYWxpZ24pDQpjaG9rZSBtZQ0KI2Vsc2UNCm1lbWFsaWduKCk7DQojZW5k aWYNCg0KOyByZXR1cm4gMDsgfQ0KY29uZmlndXJlOjEyNzQyOiBjaGVja2lu ZyBmb3IgdmFsbG9jDQpjb25maWd1cmU6MTI3NzM6IGMrKyAtbyBjb25mdGVz dCAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1leGNlcHRp b25zIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mc2hvcnQtd2NoYXIgLWlzeXN0 ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2NhbC9pbmNs dWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAgICAgLUkv dXNyL2xvY2FsL2luY2x1ZGUgLXB0aHJlYWQgIC1XbCwtcnBhdGgsL3Vzci9s b2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9saWIgICAgICAgIC1ML3Vz ci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGli eHVsICAgICAgY29uZnRlc3QuQyAgMT4mNQ0KY29uZmlndXJlOjEyODAwOiBj aGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpDQpj b25maWd1cmU6MTI4MTI6IGMrKyAtYyAtTzIgLXBpcGUgLWZuby1zdHJpY3Qt YWxpYXNpbmcgLWZuby1leGNlcHRpb25zIC1mbm8tc3RyaWN0LWFsaWFzaW5n IC1mc2hvcnQtd2NoYXIgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAg ICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5j bHVkZS9uc3MvbnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgY29uZnRl c3QuQyAxPiY1DQpjb25maWd1cmU6MTI4Mjc6IGNoZWNraW5nIGZvciBfX2F0 dHJpYnV0ZV9fKChtYWxsb2MpKQ0KY29uZmlndXJlOjEyODM5OiBjKysgLWMg LU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tZXhjZXB0aW9u cyAtZm5vLXN0cmljdC1hbGlhc2luZyAtZnNob3J0LXdjaGFyIC1pc3lzdGVt L3Vzci9sb2NhbC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVk ZS9uc3MgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vz ci9sb2NhbC9pbmNsdWRlIGNvbmZ0ZXN0LkMgMT4mNQ0KY29uZmlndXJlOjEy ODU0OiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRf cmVzdWx0KSkNCmNvbmZpZ3VyZToxMjg2NjogYysrIC1jIC1PMiAtcGlwZSAt Zm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJp Y3QtYWxpYXNpbmcgLWZzaG9ydC13Y2hhciAtaXN5c3RlbS91c3IvbG9jYWwv aW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vz ci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5j bHVkZSBjb25mdGVzdC5DIDE+JjUNCmNvbmZpZ3VyZToxMjg4MTogY2hlY2tp bmcgZm9yIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSkNCmNvbmZpZ3VyZTox Mjg5MzogYysrIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1hbGlhc2luZyAt Zm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZzaG9ydC13 Y2hhciAtaXN5c3RlbS91c3IvbG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNy L2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9u c3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZSBjb25mdGVzdC5DIDE+JjUN CmNvbmZpZ3VyZToxMjkxNzogY2hlY2tpbmcgZm9yIExDX01FU1NBR0VTDQpj b25maWd1cmU6MTI5Mjk6IGNjIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmljdC1h bGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3IvbG9j YWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1J L3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwv aW5jbHVkZSBjb25mdGVzdC5jIDE+JjUNCmNvbmZpZ3VyZToxMjk1MjogY2hl Y2tpbmcgZm9yIGxvY2FsZWNvbnYNCmNvbmZpZ3VyZToxMjk4MDogY2MgLW8g Y29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8t c3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRlICAg ICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhy ZWFkICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAtTC91c3Iv bG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGliL25zcyAtV2wsLXJw YXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgIGNvbmZ0ZXN0LmMgIDE+ JjUNCmNvbmZpZ3VyZToxMzE2OTogY2hlY2tpbmcgZm9yIG5zcHItY29uZmln DQpjb25maWd1cmU6MTMyMDQ6IGNoZWNraW5nIGZvciBOU1BSIC0gdmVyc2lv biA+PSA0LjguOA0KY29uZmlndXJlOjEzMjcyOiBjYyAtYyAtTzIgLXBpcGUg LWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcgLUkv dXNyL2xvY2FsL2luY2x1ZGUvbnNwciAtaXN5c3RlbS91c3IvbG9jYWwvaW5j bHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNzIC1JL3Vzci9s b2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9jYWwvaW5jbHVk ZSBjb25mdGVzdC5jIDE+JjUNCmNvbmZpZ3VyZToxMzMxNjogY2hlY2tpbmcg Zm9yIHBrZy1jb25maWcNCmNvbmZpZ3VyZToxMzM2MDogY2hlY2tpbmcgZm9y IGxpYmV2ZW50DQpjb25maWd1cmU6MTMzNjc6IGNoZWNraW5nIE1PWl9MSUJF VkVOVF9DRkxBR1MNCmNvbmZpZ3VyZToxMzM3MjogY2hlY2tpbmcgTU9aX0xJ QkVWRU5UX0xJQlMNCmNvbmZpZ3VyZToxMzU0MzogY2hlY2tpbmcgZm9yIG5z cy1jb25maWcNCmNvbmZpZ3VyZToxMzU3ODogY2hlY2tpbmcgZm9yIE5TUyAt IHZlcnNpb24gPj0gMy4xMy4xDQpjb25maWd1cmU6MTM2NTE6IGNoZWNraW5n IGZvciBZQVNNIGFzc2VtYmxlcg0KY29uZmlndXJlOjEzNjU3OiBjaGVja2lu ZyBmb3IgeWFzbQ0KY29uZmlndXJlOjEzNzE5OiBjaGVja2luZyBmb3IganBl Z19kZXN0cm95X2NvbXByZXNzIGluIC1sanBlZw0KY29uZmlndXJlOjEzNzM4 OiBjYyAtbyBjb25mdGVzdCAtSS91c3IvbG9jYWwvaW5jbHVkZSAtTzIgLXBp cGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcg LWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9sb2Nh bC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNzICAg ICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLUwvdXNyL2xvY2FsL2xpYiAtcHRo cmVhZCAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgLUwvdXNy L2xvY2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2FsL2xpYi9uc3MgLVdsLC1y cGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAgICBjb25mdGVzdC5jIC1s anBlZyAgIDE+JjUNCmNvbmZpZ3VyZToxMzc3NTogY2MgLWMgLUkvdXNyL2xv Y2FsL2luY2x1ZGUgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1m bm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2NhbC9pbmNsdWRl ICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkvdXNyL2xvY2Fs L2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9pbmNsdWRlIGNv bmZ0ZXN0LmMgMT4mNQ0KY29uZmlndXJlOjEzODEzOiBjaGVja2luZyBmb3Ig Z3pyZWFkIGluIC1seg0KY29uZmlndXJlOjEzODMyOiBjYyAtbyBjb25mdGVz dCAtTzIgLXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3Qt YWxpYXNpbmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1J L3Vzci9sb2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9u c3MvbnNzICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLXB0aHJlYWQgIC1X bCwtcnBhdGgsL3Vzci9sb2NhbC9saWIvbGlieHVsIC1ML3Vzci9sb2NhbC9s aWIgICAgICAgIC1ML3Vzci9sb2NhbC9saWIvbnNzIC1XbCwtcnBhdGgsL3Vz ci9sb2NhbC9saWIvbGlieHVsICAgICAgY29uZnRlc3QuYyAtbHogICAxPiY1 DQpjb25maWd1cmU6MTM4Njg6IGNjIC1jIC1PMiAtcGlwZSAtZm5vLXN0cmlj dC1hbGlhc2luZyAtZm5vLXN0cmljdC1hbGlhc2luZyAtaXN5c3RlbS91c3Iv bG9jYWwvaW5jbHVkZSAgICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbnNz IC1JL3Vzci9sb2NhbC9pbmNsdWRlL25zcy9uc3MgICAgICAtSS91c3IvbG9j YWwvaW5jbHVkZSBjb25mdGVzdC5jIDE+JjUNCmNvbmZpZ3VyZToxMzkwNjog Y2hlY2tpbmcgZm9yIEJaMl9ienJlYWQgaW4gLWxiejINCmNvbmZpZ3VyZTox MzkyNTogY2MgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1mbm8tc3RyaWN0LWFs aWFzaW5nIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1pc3lzdGVtL3Vzci9sb2Nh bC9pbmNsdWRlICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MgLUkv dXNyL2xvY2FsL2luY2x1ZGUvbnNzL25zcyAgICAgIC1JL3Vzci9sb2NhbC9p bmNsdWRlIC1wdGhyZWFkICAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xp Ynh1bCAtTC91c3IvbG9jYWwvbGliICAgICAgICAtTC91c3IvbG9jYWwvbGli L25zcyAtV2wsLXJwYXRoLC91c3IvbG9jYWwvbGliL2xpYnh1bCAgICAgIGNv bmZ0ZXN0LmMgLWxiejIgICAxPiY1DQpjb25maWd1cmU6MTM5Nzc6IGNoZWNr aW5nIGZvciBwbmdfZ2V0X3ZhbGlkIGluIC1scG5nDQpjb25maWd1cmU6MTM5 OTY6IGNjIC1vIGNvbmZ0ZXN0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtTzIg LXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNp bmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9s b2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNz ICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLUwvdXNyL2xvY2FsL2xpYiAt bHogIC1seiAtcHRocmVhZCAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9s aWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2FsL2xp Yi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAgICBj b25mdGVzdC5jIC1scG5nICAgMT4mNQ0KY29uZmlndXJlOjE0MDE4OiBjaGVj a2luZyBmb3IgcG5nX2dldF9hY1RMIGluIC1scG5nDQpjb25maWd1cmU6MTQw Mzc6IGNjIC1vIGNvbmZ0ZXN0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtTzIg LXBpcGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1zdHJpY3QtYWxpYXNp bmcgLWlzeXN0ZW0vdXNyL2xvY2FsL2luY2x1ZGUgICAgICAgIC1JL3Vzci9s b2NhbC9pbmNsdWRlL25zcyAtSS91c3IvbG9jYWwvaW5jbHVkZS9uc3MvbnNz ICAgICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLUwvdXNyL2xvY2FsL2xpYiAt bHogIC1seiAtcHRocmVhZCAgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9s aWJ4dWwgLUwvdXNyL2xvY2FsL2xpYiAgICAgICAgLUwvdXNyL2xvY2FsL2xp Yi9uc3MgLVdsLC1ycGF0aCwvdXNyL2xvY2FsL2xpYi9saWJ4dWwgICAgICBj b25mdGVzdC5jIC1scG5nICAgMT4mNQ0KL3Zhci90bXAvL2NjWjg4NFpULm8o LnRleHQrMHg3KTogSW4gZnVuY3Rpb24gYG1haW4nOg0KOiB1bmRlZmluZWQg cmVmZXJlbmNlIHRvIGBwbmdfZ2V0X2FjVEwnDQpjb25maWd1cmU6IGZhaWxl ZCBwcm9ncmFtIHdhczoNCiNsaW5lIDE0MDI2ICJjb25maWd1cmUiDQojaW5j bHVkZSAiY29uZmRlZnMuaCINCi8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVy bmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovDQovKiBXZSB1 c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5 cGUgb2YgYSBnY2MyDQogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1l bnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8NCmNoYXIgcG5n X2dldF9hY1RMKCk7DQoNCmludCBtYWluKCkgew0KcG5nX2dldF9hY1RMKCkN CjsgcmV0dXJuIDA7IH0NCg== --825750751-1717337581-1347871617=:42434 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=pkg_info.out Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pkg_info.out SW1hZ2VNYWdpY2stNi43LjkuNCBJbWFnZSBwcm9jZXNzaW5nIHRvb2xzDQpP UkJpdDItMi4xNC4xOSAgICAgIEhpZ2gtcGVyZm9ybWFuY2UgQ09SQkEgT1JC IHdpdGggc3VwcG9ydCBmb3IgdGhlIEMgbGFuZ3VhZ2UNCk9wZW5TUC0xLjUu Ml8yICAgICAgVGhpcyBwYWNrYWdlIGlzIGEgY29sbGVjdGlvbiBvZiBTR01M L1hNTCB0b29scyBjYWxsZWQgT3BlblMNClhhdzNkLTEuNUVfNCAgICAgICAg QSAzLUQgQXRoZW5hIFdpZGdldCBzZXQgdGhhdCBsb29rcyBsaWtlIE1vdGlm DQphZG9iZS1jbWFwcy0yMDA1MTIxN18xIEFkb2JlIENNYXAgY29sbGVjdGlv bg0KYWxwaW5lLTIuMDBfMyAgICAgICBNYWlsIGFuZCBuZXdzIGNsaWVudCBk ZXNjZW5kZWQgZnJvbSBQaW5lDQphbnRsci0yLjcuNyAgICAgICAgIEFOb3Ro ZXIgVG9vbCBmb3IgTGFuZ3VhZ2UgUmVjb2duaXRpb24NCmFwYWNoZS1hbnQt MS44LjNfMSAgSmF2YS0gYW5kIFhNTC1iYXNlZCBidWlsZCB0b29sLCBjb25j ZXB0dWFsbHkgc2ltaWxhciB0byBtYWsNCmFwYWNoZTIyLTIuMi4yMl84ICAg VmVyc2lvbiAyLjIueCBvZiBBcGFjaGUgd2ViIHNlcnZlciB3aXRoIHByZWZv cmsgTVBNLg0KYXBwcmVzLTEuMC4zICAgICAgICBQcm9ncmFtIHRvIGxpc3Qg YXBwbGljYXRpb24ncyByZXNvdXJjZXMNCmFwci0xLjQuNi4xLjQuMV8xICAg QXBhY2hlIFBvcnRhYmlsaXR5IExpYnJhcnkNCmFzcGVsbC0wLjYwLjYuMV8x ICAgU3BlbGxpbmcgY2hlY2tlciB3aXRoIGJldHRlciBzdWdnZXN0aW9uIGxv Z2ljIHRoYW4gaXNwZWxsDQphdGstMi4wLjEgICAgICAgICAgIEEgR05PTUUg YWNjZXNzaWJpbGl0eSB0b29sa2l0IChBVEspDQphdXRvY29uZi0yLjEzLjAw MDIyN182IEF1dG9tYXRpY2FsbHkgY29uZmlndXJlIHNvdXJjZSBjb2RlIG9u IG1hbnkgVW4qeCBwbGF0Zm9ybXMgDQphdXRvY29uZi0yLjY5ICAgICAgIEF1 dG9tYXRpY2FsbHkgY29uZmlndXJlIHNvdXJjZSBjb2RlIG9uIG1hbnkgVW4q eCBwbGF0Zm9ybXMNCmF1dG9jb25mLXdyYXBwZXItMjAxMDExMTkgV3JhcHBl ciBzY3JpcHQgZm9yIEdOVSBhdXRvY29uZg0KYXV0b21ha2UtMS4xMi4zICAg ICBHTlUgU3RhbmRhcmRzLWNvbXBsaWFudCBNYWtlZmlsZSBnZW5lcmF0b3IN CmF1dG9tYWtlLXdyYXBwZXItMjAxMDExMTkgV3JhcHBlciBzY3JpcHQgZm9y IEdOVSBhdXRvbWFrZQ0KYmFzaC00LjIuMzcgICAgICAgICBUaGUgR05VIFBy b2plY3QncyBCb3VybmUgQWdhaW4gU0hlbGwNCmJkZnRvcGNmLTEuMC4zICAg ICAgQ29udmVydCBYIGZvbnQgZnJvbSBCREYgdG8gUENGDQpiaWdyZXFzcHJv dG8tMS4xLjEgIEJpZ1JlcXMgZXh0ZW5zaW9uIGhlYWRlcnMNCmJpc29uLTIu NS4xLDEgICAgICAgQSBwYXJzZXIgZ2VuZXJhdG9yIGZyb20gRlNGLCAobW9z dGx5KSBjb21wYXRpYmxlIHdpdGggWWFjYw0KYml0bWFwLTEuMC41ICAgICAg ICBCaXRtYXAgZWRpdG9yIGFuZCBjb252ZXJ0ZXIgdXRpbGl0aWVzIGZvciBY DQpiaXRzdHJlYW0tdmVyYS0xLjEwXzUgQml0c3RyZWFtIFZlcmEgVHJ1ZVR5 cGUgZm9udCBjb2xsZWN0aW9uDQpib2VobS1nYy03LjEgICAgICAgIEdhcmJh Z2UgY29sbGVjdGlvbiBhbmQgbWVtb3J5IGxlYWsgZGV0ZWN0aW9uIGZvciBD IGFuZCBDKysNCmNhX3Jvb3RfbnNzLTMuMTMuNiAgVGhlIHJvb3QgY2VydGlm aWNhdGUgYnVuZGxlIGZyb20gdGhlIE1vemlsbGEgUHJvamVjdA0KY2Fpcm8t MS4xMC4yXzQsMiAgICBWZWN0b3IgZ3JhcGhpY3MgbGlicmFyeSB3aXRoIGNy b3NzLWRldmljZSBvdXRwdXQgc3VwcG9ydA0KY2FrZXBocC0xLjIuMTAgICAg ICBBIGZyYW1ld29yayBmb3IgZGV2ZWxvcGluZyBQSFAgd2ViIGFwcGxpY2F0 aW9ucw0KY2NsaWVudC0yMDA3ZiwxICAgICBNYXJrIENyaXNwaW4ncyBDLWNs aWVudCBtYWlsIGFjY2VzcyByb3V0aW5lcw0KY2dpd3JhcC00LjEgICAgICAg ICBTZWN1cmVseSBleGVjdXRlIFdlYiBDR0kgc2NyaXB0cw0KY20tc3VwZXIt MC4zLjRfNCAgICBDb21wdXRlciBNb2Rlcm4gRm9udCBGYW1pbGllcyBpbiBU eXBlIDEgRm9udHMNCmNtYWtlLTIuOC45ICAgICAgICAgQSBjcm9zcy1wbGF0 Zm9ybSBNYWtlZmlsZSBnZW5lcmF0b3INCmNtYWtlLW1vZHVsZXMtMi44Ljkg TW9kdWxlcyBhbmQgVGVtcGxhdGVzIGZvciBDTWFrZQ0KY29tcGF0N3gtYW1k NjQtNy4zLjcwMzAwMC4yMDEwMDhfMSBBIGNvbnZlbmllbmNlIHBhY2thZ2Ug dG8gaW5zdGFsbCB0aGUgY29tcGF0N3ggbGlicmFyaWVzDQpjb21wb3NpdGVw cm90by0wLjQuMiBDb21wb3NpdGUgZXh0ZW5zaW9uIGhlYWRlcnMNCmNvbnNv bGVraXQtMC40LjMgICAgRnJhbWV3b3JrIGZvciBkZWZpbmluZyBhbmQgdHJh Y2tpbmcgdXNlcnMNCmN1cHMtY2xpZW50LTEuNS4yXzIgQ29tbW9uIFVOSVgg UHJpbnRpbmcgU3lzdGVtOiBMaWJyYXJ5IGN1cHMNCmN1cHMtaW1hZ2UtMS41 LjJfMSAgQ29tbW9uIFVOSVggUHJpbnRpbmcgU3lzdGVtOiBMaWJyYXJ5IGN1 cHNpbWFnZQ0KY3VybC03LjI0LjAgICAgICAgICBOb24taW50ZXJhY3RpdmUg dG9vbCB0byBnZXQgZmlsZXMgZnJvbSBGVFAsIEdPUEhFUiwgSFRUUChTKQ0K Y3ZzcHMtMi4xXzEgICAgICAgICBDcmVhdGUgcGF0Y2hzZXQgaW5mb3JtYXRp b24gZnJvbSBDVlMNCmRhbWFnZXByb3RvLTEuMi4xICAgRGFtYWdlIGV4dGVu c2lvbiBoZWFkZXJzDQpkYjQxLTQuMS4yNV80ICAgICAgIFRoZSBCZXJrZWxl eSBEQiBwYWNrYWdlLCByZXZpc2lvbiA0LjENCmRiNDItNC4yLjUyXzUgICAg ICAgVGhlIEJlcmtlbGV5IERCIHBhY2thZ2UsIHJldmlzaW9uIDQuMg0KZGJ1 cy0xLjQuMTRfNCAgICAgICBBIG1lc3NhZ2UgYnVzIHN5c3RlbSBmb3IgaW50 ZXItYXBwbGljYXRpb24gY29tbXVuaWNhdGlvbg0KZGJ1cy1nbGliLTAuOTQg ICAgICBHTGliIGJpbmRpbmdzIGZvciB0aGUgRC1CVVMgbWVzc2FnaW5nIHN5 c3RlbQ0KZGNvbmYtMC41LjFfNCAgICAgICBBIGNvbmZpZ3VyYXRpb24gZGF0 YWJhc2Ugc3lzdGVtIGZvciBHTk9NRQ0KZGVza3RvcC1maWxlLXV0aWxzLTAu MTggQSBjb3VwbGUgb2YgY29tbWFuZCBsaW5lIHV0aWxpdGllcyBmb3Igd29y a2luZyB3aXRoIGRlc2t0b3ANCmRpYWJsby1qZGstMS42LjAuMDcuMDJfMjAg SmF2YSBEZXZlbG9wbWVudCBLaXQgMS42LjBfMDcuMDINCmRtaWRlY29kZS0y LjExICAgICAgQSB0b29sIGZvciBkdW1waW5nIERNSSAoU01CSU9TKSBjb250 ZW50cyBpbiBodW1hbi1yZWFkYWJsZSANCmRteHByb3RvLTIuMy4xICAgICAg RE1YIGV4dGVuc2lvbiBoZWFkZXJzDQpkb2Nib29rLTQuMV80ICAgICAgIFY0 LjEgb2YgdGhlIERvY0Jvb2sgRFRELCBkZXNpZ25lZCBmb3IgdGVjaG5pY2Fs IGRvY3VtZW50YXRpDQpkb2Nib29rLXhtbC00LjJfMSAgIFhNTCB2ZXJzaW9u IG9mIHRoZSBEb2NCb29rIERURA0KZG9jYm9vay14bWwtNC41ICAgICBEb2NC b29rL1hNTCBEVEQgVjQuNSwgZGVzaWduZWQgZm9yIHRlY2huaWNhbCBkb2N1 bWVudGF0aW9uDQpkb2Nib29rLXhzbC0xLjc2LjEgIFhTTCBEb2NCb29rIHN0 eWxlc2hlZXRzDQpkb2Nwcm9qLWphZGV0ZXgtMS4xN182IFRoZSAibWV0YS1w b3J0IiBmb3IgdGhlIEZyZWVCU0QgRG9jdW1lbnRhdGlvbiBQcm9qZWN0DQpk b2Nwcm9qLW5vamFkZXRleC0xLjE3XzYgVGhlICJtZXRhLXBvcnQiIGZvciB0 aGUgRnJlZUJTRCBEb2N1bWVudGF0aW9uIFByb2plY3QNCmRyaS03LjYuMV8y LDIgICAgICAgT3BlbkdMIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBkcml2ZXJz IGZvciB0aGUgRFJJDQpkcmkycHJvdG8tMi42ICAgICAgIERSSTIgcHJvdG90 eXBlIGhlYWRlcnMNCmRzc3NsLWRvY2Jvb2stbW9kdWxhci0xLjc5XzEsMSBE U1NTTCBzdHlsZXNoZWV0cyBmb3IgdGhlIERvY0Jvb2sgRFREIGJ5IE5vcm1h biBXYWxzaA0KZHZpcGRmbXgtMjAxMDAzMjhfMSBEdmlwZGZtIHdpdGggQXNp YW4gbGFuZ3VhZ2VzIGJ5IENJRC1rZXllZCBmb250IHRlY2hub2xvZ3kgcw0K ZHZpcHNrLXRldGV4LTUuOTVhXzYgQ29udmVydCBhIFRlWCBEVkkgZmlsZSB0 byBQb3N0U2NyaXB0DQplZ2dkYnVzLTAuNl8xICAgICAgIEQtQnVzIGJpbmRp bmdzIGZvciBHT2JqZWN0DQplbWFjcy0yNC4yLDIgICAgICAgIEdOVSBlZGl0 aW5nIG1hY3Jvcw0KZW5jb2RpbmdzLTEuMC40LDEgICBYLk9yZyBFbmNvZGlu ZyBmb250cw0KZW5zY3JpcHQtYTQtMS42LjRfNSBBU0NJSSB0byBQb3N0U2Ny aXB0IGZpbHRlcg0KZXZpZWV4dC0xLjEuMSAgICAgICBYRVZJRSBleHRlbnNp b24gaGVhZGVycw0KZXhwYXQtMi4wLjFfMiAgICAgICBYTUwgMS4wIHBhcnNl ciB3cml0dGVuIGluIEMNCmZmdHczLTMuMy4yICAgICAgICAgRmFzdCBDIHJv dXRpbmVzIHRvIGNvbXB1dGUgdGhlIERpc2NyZXRlIEZvdXJpZXIgVHJhbnNm b3JtDQpmaXhlc3Byb3RvLTUuMCAgICAgIEZpeGVzIGV4dGVuc2lvbiBoZWFk ZXJzDQpmaXhydGYtMC4xLjIwMDYwMzAzXzIgQSBwYXRjaCBtYWtpbmcgaXQg cG9zc2libGUgdG8gZW1iZWQgUE5HcyBpbnRvIFJURnMNCmZvbnQtYWRvYmUt MTAwZHBpLTEuMC4zIFguT3JnIEFkb2JlIDEwMGRwaSBmb250DQpmb250LWFk b2JlLTc1ZHBpLTEuMC4zIFguT3JnIEFkb2JlIDc1ZHBpIGZvbnQNCmZvbnQt YWRvYmUtdXRvcGlhLTEwMGRwaS0xLjAuNCBYLk9yZyBBZG9iZSBVdG9waWEg MTAwZHBpIGZvbnQNCmZvbnQtYWRvYmUtdXRvcGlhLTc1ZHBpLTEuMC40IFgu T3JnIEFkb2JlIFV0b3BpYSA3NWRwaSBmb250DQpmb250LWFkb2JlLXV0b3Bp YS10eXBlMS0xLjAuNCBYLk9yZyBBZG9iZSBVdG9waWEgVHlwZTEgZm9udA0K Zm9udC1hbGlhcy0xLjAuMyAgICBYLk9yZyBGb250IGFsaWFzZXMNCmZvbnQt YW1zZm9udHMtMy4wMl8xIENvbXB1dGVyIE1vZGVybiBhbmQgc3RhbmRhcmQg Zm9udHMgZm9yIFRlWA0KZm9udC1hcmFiaWMtbWlzYy0xLjAuMyBYLk9yZyBt aXNjZWxsYW5lb3VzIEFyYWJpYyBmb250cw0KZm9udC1iaC0xMDBkcGktMS4w LjMgWC5PcmcgQmlnZWxvdyBIb2xtZXMgMTAwZHBpIGZvbnQNCmZvbnQtYmgt NzVkcGktMS4wLjMgWC5PcmcgQmlnZWxvdyBIb2xtZXMgNzVkcGkgZm9udA0K Zm9udC1iaC1sdWNpZGF0eXBld3JpdGVyLTEwMGRwaS0xLjAuMyBYLk9yZyBC aWdlbG93IEhvbG1lcyBMdWNpZGEgVHlwZVdyaXRlciAxMDBkcGkgZm9udA0K Zm9udC1iaC1sdWNpZGF0eXBld3JpdGVyLTc1ZHBpLTEuMC4zIFguT3JnIEJp Z2Vsb3cgSG9sbWVzIEx1Y2lkYSBUeXBlV3JpdGVyIDc1ZHBpIGZvbnQNCmZv bnQtYmgtdHRmLTEuMC4zICAgWC5PcmcgQmlnZWxvdyAmIEhvbG1lcyBUVEYg Zm9udA0KZm9udC1iaC10eXBlMS0xLjAuMyBYLk9yZyBCaWdlbG93IEhvbG1l cyBUeXBlMSBmb250DQpmb250LWJpdHN0cmVhbS0xMDBkcGktMS4wLjMgWC5P cmcgQml0c3RyZWFtIFZlcmEgMTAwZHBpIGZvbnQNCmZvbnQtYml0c3RyZWFt LTc1ZHBpLTEuMC4zIFguT3JnIEJpdHN0cmVhbSBWZXJhIDc1ZHBpIGZvbnQN CmZvbnQtYml0c3RyZWFtLXR5cGUxLTEuMC4zIFguT3JnIEJpdHN0cmVhbSBW ZXJhIFR5cGUxIGZvbnQNCmZvbnQtY3Jvbnl4LWN5cmlsbGljLTEuMC4zIFgu T3JnIENyb255eCBDeXJpbGxpYyBmb250DQpmb250LWN1cnNvci1taXNjLTEu MC4zIFguT3JnIG1pc2NlbGxhbmVvdXMgQ3Vyc29yIGZvbnRzDQpmb250LWRh ZXdvby1taXNjLTEuMC4zIFguT3JnIG1pc2NlbGxhbmVvdXMgRGFld29vIGZv bnRzDQpmb250LWRlYy1taXNjLTEuMC4zIFguT3JnIG1pc2NlbGxhbmVvdXMg RGVjIGZvbnRzDQpmb250LWlibS10eXBlMS0xLjAuMyBYLk9yZyBJQk0gVHlw ZTEgZm9udA0KZm9udC1pc2FzLW1pc2MtMS4wLjMgWC5PcmcgbWlzY2VsbGFu ZW91cyBJU0FTIGZvbnRzDQpmb250LWppcy1taXNjLTEuMC4zIFguT3JnIG1p c2NlbGxhbmVvdXMgSklTIGZvbnRzDQpmb250LW1pY3JvLW1pc2MtMS4wLjMg WC5PcmcgbWlzY2VsbGFuZW91cyBNaWNybyBmb250cw0KZm9udC1taXNjLWN5 cmlsbGljLTEuMC4zIFguT3JnIG1pc2NlbGxhbmVvdXMgQ3lyaWxsaWMgZm9u dA0KZm9udC1taXNjLWV0aGlvcGljLTEuMC4zIFguT3JnIG1pc2NlbGxhbmVv dXMgRXRoaW9waWMgZm9udA0KZm9udC1taXNjLW1lbHRoby0xLjAuMyBYLk9y ZyBtaXNjZWxsYW5lb3VzIE1lbHRobyBmb250DQpmb250LW1pc2MtbWlzYy0x LjEuMiBYLk9yZyBtaXNjZWxsYW5lb3VzIE1pc2MgZm9udHMNCmZvbnQtbXV0 dC1taXNjLTEuMC4zIFguT3JnIG1pc2NlbGxhbmVvdXMgTXV0dCBmb250cw0K Zm9udC1zY2h1bWFjaGVyLW1pc2MtMS4xLjIgWC5PcmcgbWlzY2VsbGFuZW91 cyBTY2h1bWFjaGVyIGZvbnRzDQpmb250LXNjcmVlbi1jeXJpbGxpYy0xLjAu NCBYLk9yZyBTY3JlZW4gQ3lyaWxsaWMgZm9udA0KZm9udC1zb255LW1pc2Mt MS4wLjMgWC5PcmcgbWlzY2VsbGFuZW91cyBTb255IGZvbnRzDQpmb250LXN1 bi1taXNjLTEuMC4zIFguT3JnIG1pc2NlbGxhbmVvdXMgU3VuIGZvbnRzDQpm b250LXV0aWwtMS4yLjAgICAgIENyZWF0ZSBhbiBpbmRleCBvZiBYIGZvbnQg ZmlsZXMgaW4gYSBkaXJlY3RvcnkNCmZvbnQtd2luaXR6a2ktY3lyaWxsaWMt MS4wLjMgWC5PcmcgV2luaXR6a2kgQ3lyaWxsaWMgZm9udA0KZm9udC14ZnJl ZTg2LXR5cGUxLTEuMC40IFguT3JnIFhGcmVlODYgVHlwZTEgZm9udA0KZm9u dGNhY2hlcHJvdG8tMC4xLjMgRm9udGNhY2hlIGV4dGVuc2lvbiBoZWFkZXJz DQpmb250Y29uZmlnLTIuOS4wLDEgIEFuIFhNTC1iYXNlZCBmb250IGNvbmZp Z3VyYXRpb24gQVBJIGZvciBYIFdpbmRvd3MNCmZvbnRzcHJvdG8tMi4xLjEg ICAgRm9udHMgZXh0ZW5zaW9uIGhlYWRlcnMNCmZyZWV0eXBlLTEuMy4xXzQg ICAgQSBmcmVlIGFuZCBwb3J0YWJsZSBUcnVlVHlwZSBmb250IHJlbmRlcmlu ZyBlbmdpbmUNCmZyZWV0eXBlLXRvb2xzLTEuMy4xXzkgVG9vbHMgZm9yIEZy ZWVUeXBlIDENCmZyZWV0eXBlMi0yLjQuOV8xICAgQSBmcmVlIGFuZCBwb3J0 YWJsZSBUcnVlVHlwZSBmb250IHJlbmRlcmluZyBlbmdpbmUNCmZyaWJpZGkt MC4xOS4yXzEgICAgQSBGcmVlIEltcGxlbWVudGF0aW9uIG9mIHRoZSBVbmlj b2RlIEJpZGlyZWN0aW9uYWwgQWxnb3JpdGgNCmdhbWluLTAuMS4xMF80ICAg ICAgQSBmaWxlIGFuZCBkaXJlY3RvcnkgbW9uaXRvcmluZyBzeXN0ZW0NCmdj Y21ha2VkZXAtMS4wLjIgICAgQ3JlYXRlIGRlcGVuZGVuY2llcyBpbiBtYWtl ZmlsZXMgdXNpbmcgJ2djYyAtTScNCmdjb25mMi0yLjMyLjBfMyAgICAgQSBj b25maWd1cmF0aW9uIGRhdGFiYXNlIHN5c3RlbSBmb3IgR05PTUUNCmdkLTIu MC4zNV84LDEgICAgICAgQSBncmFwaGljcyBsaWJyYXJ5IGZvciBmYXN0IGNy ZWF0aW9uIG9mIGltYWdlcw0KZ2RibS0xLjkuMSAgICAgICAgICBUaGUgR05V IGRhdGFiYXNlIG1hbmFnZXINCmdkay1waXhidWYtMi4yMy41XzMgQSBncmFw aGljIGxpYnJhcnkgZm9yIEdUSysNCmdldG9wdC0xLjEuNF8yICAgICAgQSBn ZXRvcHQoMSkgcmVwbGFjZW1lbnQgdGhhdCBzdXBwb3J0cyBHTlUtc3R5bGUg bG9uZyBvcHRpb24NCmdldHRleHQtMC4xOC4xLjEgICAgR05VIGdldHRleHQg cGFja2FnZQ0KZ2hvc3RzY3JpcHQ4LTguNzFfMTAgR2hvc3RzY3JpcHQgOC54 IFBvc3RTY3JpcHQgaW50ZXJwcmV0ZXINCmdpZmxpYi00LjIuMF8yICAgICAg VG9vbHMgYW5kIGxpYnJhcnkgcm91dGluZXMgZm9yIHdvcmtpbmcgd2l0aCBH SUYgaW1hZ2VzDQpnaW8tZmFtLWJhY2tlbmQtMi4yOC44XzEgRkFNIGJhY2tl bmQgZm9yIEdMaWJcJ3MgR0lPIGxpYnJhcnkNCmdpdC0xLjcuMTEuNSAgICAg ICAgRGlzdHJpYnV0ZWQgc291cmNlIGNvZGUgbWFuYWdlbWVudCB0b29sDQpn bGliLTEuMi4xMF8xMyAgICAgIFNvbWUgdXNlZnVsIHJvdXRpbmVzIG9mIEMg cHJvZ3JhbW1pbmcgKHByZXZpb3VzIHN0YWJsZSB2ZXJzDQpnbGliLTIuMjgu OF80ICAgICAgIFNvbWUgdXNlZnVsIHJvdXRpbmVzIG9mIEMgcHJvZ3JhbW1p bmcgKGN1cnJlbnQgc3RhYmxlIHZlcnNpDQpnbHByb3RvLTEuNC4xNSAgICAg IEdMWCBleHRlbnNpb24gaGVhZGVycw0KZ21ha2UtMy44Ml8xICAgICAgICBH TlUgdmVyc2lvbiBvZiAnbWFrZScgdXRpbGl0eQ0KZ21wLTUuMC41ICAgICAg ICAgICBBIGZyZWUgbGlicmFyeSBmb3IgYXJiaXRyYXJ5IHByZWNpc2lvbiBh cml0aG1ldGljDQpnbm9tZV9zdWJyLTEuMCAgICAgIENvbW1vbiBzdGFydHVw IGFuZCBzaHV0ZG93biBzdWJyb3V0aW5lcyB1c2VkIGJ5IEdOT01FIHNjcmlw DQpnbm9tZWhpZXItMi4zXzEyICAgIEEgdXRpbGl0eSBwb3J0IHRoYXQgY3Jl YXRlcyB0aGUgR05PTUUgZGlyZWN0b3J5IHRyZWUNCmdudXRscy0yLjEyLjE4 XzEgICAgR05VIFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSBsaWJyYXJ5DQpn b2JqZWN0LWludHJvc3BlY3Rpb24tMC4xMC44XzIgR2VuZXJhdGUgaW50ZXJm YWNlIGludHJvc3BlY3Rpb24gZGF0YSBmb3IgR09iamVjdCBsaWJyYXJpZXMN CmdwZXJmLTMuMC4zICAgICAgICAgR2VuZXJhdGVzIHBlcmZlY3QgaGFzaCBm dW5jdGlvbnMgZm9yIHNldHMgb2Yga2V5d29yZHMNCmdzZm9udHMtOC4xMV81 ICAgICAgU3RhbmRhcmQgRm9udHMgZm9yIEdob3N0c2NyaXB0DQpndGstMS4y LjEwXzIyICAgICAgIEdpbXAgVG9vbGtpdCBmb3IgWDExIEdVSSAocHJldmlv dXMgc3RhYmxlIHZlcnNpb24pDQpndGstMi4yNC42XzIgICAgICAgIEdpbXAg VG9vbGtpdCBmb3IgWDExIEdVSSAocHJldmlvdXMgc3RhYmxlIHZlcnNpb24p DQpndGstZW5naW5lczItMi4yMC4yXzEgVGhlbWUgZW5naW5lIGZvciB0aGUg R1RLKy0yLjAgdG9vbGtpdA0KZ3RrLXVwZGF0ZS1pY29uLWNhY2hlLTIuMjQu Nl8xIGd0ay11cGRhdGUtaWNvbi1jYWNoZSB1dGlsaXR5IGZyb20gdGhlIEd0 aysgdG9vbGtpdC4NCmd2LTMuNy4zXzEgICAgICAgICAgQSBQb3N0U2NyaXB0 IGFuZCBQREYgcHJldmlld2VyDQpoYWwtMC41LjE0XzE5ICAgICAgIEhhcmR3 YXJlIEFic3RyYWN0aW9uIExheWVyIGZvciBzaW1wbGlmeWluZyBkZXZpY2Ug YWNjZXNzDQpoZWxwMm1hbi0xLjQwLjEyICAgIEF1dG9tYXRpY2FsbHkgZ2Vu ZXJhdGluZyBzaW1wbGUgbWFudWFsIHBhZ2VzIGZyb20gcHJvZ3JhbSBvDQpo aWNvbG9yLWljb24tdGhlbWUtMC4xMiBBIGhpZ2gtY29sb3IgaWNvbiB0aGVt ZSBzaGVsbCBmcm9tIHRoZSBGcmVlRGVza3RvcCBwcm9qZWN0DQpodG1sLTQu MDFfMiAgICAgICAgIEFsbCBXM0MgcHVibGlzaGVkIFNHTUwgRFREcyBmb3Ig SFRNTA0KaHRtbDJ0ZXh0LTEuMy4yYSAgICBDb252ZXJ0cyBIVE1MIGRvY3Vt ZW50cyBpbnRvIHBsYWluIHRleHQNCmh1bnNwZWxsLTEuMy4yXzEgICAgSW1w cm92ZWQgc3BlbGwtY2hlY2tlciBmb3IgSHVuZ2FyaWFuIGFuZCBvdGhlciBs YW5ndWFnZXMNCmljZWF1dGgtMS4wLjUgICAgICAgSUNFIGF1dGhvcml0eSBm aWxlIHV0aWxpdHkgZm9yIFgNCmltYWtlLTEuMC40LDEgICAgICAgSW1ha2Ug YW5kIG90aGVyIHV0aWxpdGllcyBmcm9tIFguT3JnDQppbnB1dHByb3RvLTIu MC4yICAgIElucHV0IGV4dGVuc2lvbiBoZWFkZXJzDQppbnRsdG9vbC0wLjQx LjEgICAgIFRvb2xzIHRvIGludGVybmF0aW9uYWxpemUgdmFyaW91cyBraW5k cyBvZiBkYXRhIGZpbGVzDQppc284ODc5LTE5ODZfMyAgICAgIENoYXJhY3Rl ciBlbnRpdHkgc2V0cyBmcm9tIElTTyA4ODc5OjE5ODYgKFNHTUwpDQpqYWRl dGV4LTMuMTNfOCAgICAgIEEgVGVYIGJhY2tlbmQgZm9yIEphZGUsIGZvciB0 eXBlc2V0dGluZyBTR01MIGRvY3VtZW50cw0KamFzcGVyLTEuOTAwLjFfMTAg ICBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29kZWMgc3BlY2lmaWVkIGlu IHRoZSBKUEVHLTIwMDAgcw0KamF2YS16b25laW5mby0yMDEyLmYgVXBkYXRl ZCBKYXZhIHRpbWV6b25lIGRlZmluaXRpb25zDQpqYXZhdm13cmFwcGVyLTIu NCAgIFdyYXBwZXIgc2NyaXB0IGZvciB2YXJpb3VzIEphdmEgVmlydHVhbCBN YWNoaW5lcw0KamJpZzJkZWMtMC4xMV8xICAgICBEZWNvZGVyIGltcGxlbWVu dGF0aW9uIG9mIHRoZSBKQklHMiBpbWFnZSBjb21wcmVzc2lvbiBmb3JtYQ0K amJpZ2tpdC0xLjYgICAgICAgICBMb3NzbGVzcyBjb21wcmVzc2lvbiBmb3Ig YmktbGV2ZWwgaW1hZ2VzIHN1Y2ggYXMgc2Nhbm5lZCBwYQ0KamRrLTEuNi4w LjNwNF8yOSAgICBKYXZhIERldmVsb3BtZW50IEtpdCAxLjYuMA0KanBlZy04 XzMgICAgICAgICAgICBJSkcncyBqcGVnIGNvbXByZXNzaW9uIHV0aWxpdGll cw0Ka2Jwcm90by0xLjAuNSAgICAgICBLQiBleHRlbnNpb24gaGVhZGVycw0K bGF0ZXgtY2prLTQuOC4yXzYgICBBIExhVGVYMmUgbWFjcm8gcGFja2FnZSB3 aGljaCBlbmFibGVzIHRoZSB1c2Ugb2YgQ0pLIHNjcmlwdA0KbGNtcy0xLjE5 XzEsMSAgICAgICBMaWdodCBDb2xvciBNYW5hZ2VtZW50IFN5c3RlbSAtLSBh IGNvbG9yIG1hbmFnZW1lbnQgbGlicmFyeQ0KbGNtczItMi4zICAgICAgICAg ICBBY2N1cmF0ZSwgZmFzdCwgYW5kIHNtYWxsLWZvb3RwcmludCBjb2xvciBt YW5hZ2VtZW50IGVuZ2luZQ0KbGliRlMtMS4wLjMgICAgICAgICBUaGUgRlMg bGlicmFyeQ0KbGliR0wtNy42LjFfMiAgICAgICBPcGVuR0wgbGlicmFyeSB0 aGF0IHJlbmRlcnMgdXNpbmcgR0xYIG9yIERSSQ0KbGliSUNFLTEuMC43LDEg ICAgICBJbnRlciBDbGllbnQgRXhjaGFuZ2UgbGlicmFyeSBmb3IgWDExDQps aWJJREwtMC44LjE0XzEgICAgIEEgbGlicmFyeSBmb3IgY3JlYXRpbmcgdHJl ZXMgb2YgQ09SQkEgSURMIGZpbGVzDQpsaWJTTS0xLjIuMCwxICAgICAgIFNl c3Npb24gTWFuYWdlbWVudCBsaWJyYXJ5IGZvciBYMTENCmxpYlgxMS0xLjQu NCwxICAgICAgWDExIGxpYnJhcnkNCmxpYlhTY3JuU2F2ZXItMS4yLjEgVGhl IFhTY3JuU2F2ZXIgbGlicmFyeQ0KbGliWFRyYXAtMS4wLjAgICAgICBUaGUg WFRyYXAgbGlicmFyeQ0KbGliWGF1LTEuMC42ICAgICAgICBBdXRoZW50aWNh dGlvbiBQcm90b2NvbCBsaWJyYXJ5IGZvciBYMTENCmxpYlhhdy0xLjAuOSwy ICAgICAgWCBBdGhlbmEgV2lkZ2V0cyBsaWJyYXJ5DQpsaWJYY29tcG9zaXRl LTAuNC4zLDEgWCBDb21wb3NpdGUgZXh0ZW5zaW9uIGxpYnJhcnkNCmxpYlhj dXJzb3ItMS4xLjEyICAgWCBjbGllbnQtc2lkZSBjdXJzb3IgbG9hZGluZyBs aWJyYXJ5DQpsaWJYZGFtYWdlLTEuMS4zICAgIFggRGFtYWdlIGV4dGVuc2lv biBsaWJyYXJ5DQpsaWJYZG1jcC0xLjEuMCAgICAgIFggRGlzcGxheSBNYW5h Z2VyIENvbnRyb2wgUHJvdG9jb2wgbGlicmFyeQ0KbGliWGV2aWUtMS4wLjMg ICAgICBUaGUgWGV2aWUgbGlicmFyeQ0KbGliWGV4dC0xLjMuMF8xLDEgICBY MTEgRXh0ZW5zaW9uIGxpYnJhcnkNCmxpYlhmaXhlcy01LjAgICAgICAgWCBG aXhlcyBleHRlbnNpb24gbGlicmFyeQ0KbGliWGZvbnQtMS40LjRfMSwxICBY IGZvbnQgbGliYXJ5DQpsaWJYZm9udGNhY2hlLTEuMC41IFRoZSBYZm9udGNh Y2hlIGxpYnJhcnkNCmxpYlhmdC0yLjEuMTQgICAgICAgQSBjbGllbnQtc2lk ZWQgZm9udCBBUEkgZm9yIFggYXBwbGljYXRpb25zDQpsaWJYaS0xLjQuNSwx ICAgICAgIFggSW5wdXQgZXh0ZW5zaW9uIGxpYnJhcnkNCmxpYlhpbmVyYW1h LTEuMS4xLDEgWDExIFhpbmVyYW1hIGxpYnJhcnkNCmxpYlhtdS0xLjEuMCwx ICAgICAgWCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyBsaWJyYXJpZXMNCmxp YlhwLTEuMC4xLDEgICAgICAgWCBwcmludCBsaWJyYXJ5DQpsaWJYcG0tMy41 LjkgICAgICAgIFggUGl4bWFwIGxpYnJhcnkNCmxpYlhyYW5kci0xLjMuMiAg ICAgWCBSZXNpemUgYW5kIFJvdGF0ZSBleHRlbnNpb24gbGlicmFyeQ0KbGli WHJlbmRlci0wLjkuNiAgICBYIFJlbmRlciBleHRlbnNpb24gbGlicmFyeQ0K bGliWHJlcy0xLjAuNSAgICAgICBYIFJlc291cmNlIHVzYWdlIGxpYnJhcnkN CmxpYlh0LTEuMS4xLDEgICAgICAgWCBUb29sa2l0IGxpYnJhcnkNCmxpYlh0 c3QtMS4yLjAgICAgICAgWCBUZXN0IGV4dGVuc2lvbg0KbGliWHYtMS4wLjYs MSAgICAgICBYIFZpZGVvIEV4dGVuc2lvbiBsaWJyYXJ5DQpsaWJYdk1DLTEu MC42ICAgICAgIFggVmlkZW8gRXh0ZW5zaW9uIE1vdGlvbiBDb21wZW5zYXRp b24gbGlicmFyeQ0KbGliWHhmODZkZ2EtMS4xLjIgICBYIERHQSBFeHRlbnNp b24NCmxpYlh4Zjg2bWlzYy0xLjAuMyAgWCBYRjg2LU1pc2MgRXh0ZW5zaW9u DQpsaWJYeGY4NnZtLTEuMS4xICAgIFggVmlkbW9kZSBFeHRlbnNpb24NCmxp YmNoZWNrLTAuOS44ICAgICAgQSB1bml0IHRlc3QgZnJhbWV3b3JrIGZvciBD DQpsaWJjcm9jby0wLjYuMl8xICAgIENTUzIgcGFyc2luZyBsaWJyYXJ5DQps aWJkbXgtMS4xLjEgICAgICAgIERNWCBleHRlbnNpb24gbGlicmFyeQ0KbGli ZHJtLTIuNC4xN18xICAgICBVc2Vyc3BhY2UgaW50ZXJmYWNlIHRvIGtlcm5l bCBEaXJlY3QgUmVuZGVyaW5nIE1vZHVsZSBzZXJ2aQ0KbGliZXZlbnQyLTIu MC4xOSAgICBBUEkgZm9yIGV4ZWN1dGluZyBjYWxsYmFjayBmdW5jdGlvbnMg b24gZXZlbnRzIG9yIHRpbWVvdXRzDQpsaWJmZmktMy4wLjkgICAgICAgIEZv cmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlDQpsaWJmb250ZW5jLTEuMS4wICAg IFRoZSBmb250ZW5jIExpYnJhcnkNCmxpYmZweC0xLjIuMC4xMl8yICAgTGli cmFyeSByb3V0aW5lcyBmb3Igd29ya2luZyB3aXRoIEZsYXNocGl4IGltYWdl cw0KbGliZ2NyeXB0LTEuNS4wXzEgICBHZW5lcmFsIHB1cnBvc2UgY3J5cHRv IGxpYnJhcnkgYmFzZWQgb24gY29kZSB1c2VkIGluIEdudVBHDQpsaWJnZWUt MC42LjIuMSAgICAgIEdPYmplY3QgY29sbGVjdGlvbiBsaWJyYXJ5DQpsaWJn cGctZXJyb3ItMS4xMCAgIENvbW1vbiBlcnJvciB2YWx1ZXMgZm9yIGFsbCBH bnVQRyBjb21wb25lbnRzDQpsaWJnc2YtMS4xNC4yMV8xICAgIEFuIGV4dGVu c2libGUgaS9vIGFic3RyYWN0aW9uIGZvciBkZWFsaW5nIHdpdGggc3RydWN0 dXJlZCBmDQpsaWJpY29udi0xLjE0ICAgICAgIEEgY2hhcmFjdGVyIHNldCBj b252ZXJzaW9uIGxpYnJhcnkNCmxpYmlkbi0xLjI1ICAgICAgICAgSW50ZXJu YXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIGNvbW1hbmQgbGluZSB0b29sDQps aWJscXItMS0wLjQuMV8yICAgIEFuIGVhc3kgdG8gdXNlIEMvQysrIHNlYW0g Y2FydmluZyBsaWJyYXJ5DQpsaWJsdGRsLTIuNC4yICAgICAgIFN5c3RlbSBp bmRlcGVuZGVudCBkbG9wZW4gd3JhcHBlcg0KbGlibWNyeXB0LTIuNS44ICAg ICBNdWx0aS1jaXBoZXIgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5ICh1c2VkIGlu IFBIUCkNCmxpYm5vdGlmeS0wLjcuM18yICAgQSBsaWJyYXJ5IGZvciBkZXNr dG9wIG5vdGlmaWNhdGlvbnMNCmxpYm9sZFgtMS4wLjEgICAgICAgT2xkIFgg bGlicmFyeQ0KbGlib3RmLTAuOS4xMiAgICAgICBMaWJyYXJ5IGZvciBoYW5k bGluZyBPcGVuVHlwZSBmb250cw0KbGlicGFwZXItMS4xLjI0XzEgICBBIGxp YnJhcnkgcHJvdmlkaW5nIHJvdXRpbmVzIGZvciBwYXBlciBzaXplIG1hbmFn ZW1lbnQNCmxpYnBjaWFjY2Vzcy0wLjEyLjEgR2VuZXJpYyBQQ0kgYWNjZXNz IGxpYnJhcnkNCmxpYnB0aHJlYWQtc3R1YnMtMC4zXzMgVGhpcyBsaWJyYXJ5 IHByb3ZpZGVzIHdlYWsgYWxpYXNlcyBmb3IgcHRocmVhZCBmdW5jdGlvbnMN CmxpYnJzdmcyLTIuMzQuMV8xICAgTGlicmFyeSBmb3IgcGFyc2luZyBhbmQg cmVuZGVyaW5nIFNWRyB2ZWN0b3ItZ3JhcGhpYyBmaWxlcw0KbGlicnN5bmMt MC45LjdfMiAgICBMaWJyYXJ5IGZvciBkZWx0YSBjb21wcmVzc2lvbiBvZiBz dHJlYW1zDQpsaWJ0b29sLTIuNC4yICAgICAgIEdlbmVyaWMgc2hhcmVkIGxp YnJhcnkgc3VwcG9ydCBzY3JpcHQNCmxpYnV0ZW1wdGVyLTEuMS41XzEgSW50 ZXJmYWNlIHRvIHJlY29yZCB1c2VyIHNlc3Npb25zIHRvIHV0bXAgYW5kIHd0 bXAgZmlsZXMNCmxpYnZvbHVtZV9pZC0wLjgxLjEgTGlicmFyeSB0byBwcm92 aWRlIGZpbGUgc3lzdGVtIHR5cGUgaW5mb3JtYXRpb24NCmxpYnZweC0xLjEu MCAgICAgICAgVlA4IENvZGVjIFNESw0KbGlid21mLTAuMi44LjRfNyAgICBU b29scyBhbmQgbGlicmFyeSBmb3IgY29udmVydGluZyBNaWNyb3NvZnQgV01G ICh3aW5kb3dzIG1ldA0KbGlid3d3LTUuNC4wXzQgICAgICBUaGUgVzNDIFJl ZmVyZW5jZSBMaWJyYXJ5DQpsaWJ4Y2ItMS43ICAgICAgICAgIFRoZSBYIHBy b3RvY29sIEMtbGFuZ3VhZ2UgQmluZGluZyAoWENCKSBsaWJyYXJ5DQpsaWJ4 a2JmaWxlLTEuMC43ICAgIFhLQiBmaWxlIGxpYnJhcnkNCmxpYnhrYnVpLTEu MC4yXzEgICAgVGhlIHhrYnVpIGxpYnJhcnkNCmxpYnhtbDItMi43LjhfMyAg ICAgWE1MIHBhcnNlciBsaWJyYXJ5IGZvciBHTk9NRQ0KbGlieHNsdC0xLjEu MjZfMyAgICBUaGUgWFNMVCBDIGxpYnJhcnkgZm9yIEdOT01FDQpsaWJ4dWwt MS45LjIuMjhfMSAgIE1vemlsbGEgcnVudGltZSBwYWNrYWdlIHRoYXQgY2Fu IGJlIHVzZWQgdG8gYm9vdHN0cmFwIFhVTCtYDQpsaW5rcy0yLjcsMSAgICAg ICAgIEx5bngtbGlrZSB0ZXh0IFdXVyBicm93c2VyDQpsaW51eGRvYy0xLjFf MSAgICAgIFRoZSBMaW51eGRvYyBTR01MIERURA0KbHVpdC0xLjEuMF8xICAg ICAgICBMb2NhbGUgYW5kIElTTyAyMDIyIHN1cHBvcnQgZm9yIFVuaWNvZGUg dGVybWluYWxzDQpseW54LTIuOC44ZDEyXzEgICAgIEEgbm9uLWdyYXBoaWNh bCwgdGV4dC1iYXNlZCBXb3JsZC1XaWRlIFdlYiBjbGllbnQNCm0xN24tZGIt MS42LjMgICAgICAgRGF0YSBmaWxlcyBmb3IgdGhlIG0xN24gbGlicmFyeQ0K bTE3bi1saWItMS42LjNfMSAgICBBIGxpYnJhcnkgZm9yIHRoZSBtdWx0aWxp bmd1YWwgdGV4dCBoYW5kbGluZw0KbTQtMS40LjE2XzEsMSAgICAgICBHTlUg bTQNCm1ha2VkZXBlbmQtMS4wLjMsMSAgQSBkZXBlbmRlbmN5IGdlbmVyYXRv ciBmb3IgbWFrZWZpbGVzDQptaW1lLXN1cHBvcnQtMy41Mi4xIE1JTUUgTWVk aWEgVHlwZXMgbGlzdA0KbWtmb250ZGlyLTEuMC42ICAgICBDcmVhdGUgYW4g aW5kZXggb2YgWCBmb250IGZpbGVzIGluIGEgZGlyZWN0b3J5DQpta2ZvbnRz Y2FsZS0xLjAuOSAgIENyZWF0ZXMgYW4gaW5kZXggb2Ygc2NhbGFibGUgZm9u dCBmaWxlcyBmb3IgWA0KbXlzcWwtY2xpZW50LTUuMC45NSBNdWx0aXRocmVh ZGVkIFNRTCBkYXRhYmFzZSAoY2xpZW50KQ0KbXlzcWwtc2VydmVyLTUuMC45 NSBNdWx0aXRocmVhZGVkIFNRTCBkYXRhYmFzZSAoc2VydmVyKQ0KbmVvbjI5 LTAuMjkuNl80ICAgICBBbiBIVFRQIGFuZCBXZWJEQVYgY2xpZW50IGxpYnJh cnkgZm9yIFVuaXggc3lzdGVtcw0KbmV0cGJtLTEwLjM1Ljg2ICAgICBBIHRv b2xraXQgZm9yIGNvbnZlcnNpb24gb2YgaW1hZ2VzIGJldHdlZW4gZGlmZmVy ZW50IGZvcm1hdA0KbmV0dGxlLTIuNSAgICAgICAgICBBIGxvdy1sZXZlbCBj cnlwdG9ncmFwaGljIGxpYnJhcnkNCm5zcHItNC45LjIgICAgICAgICAgQSBw bGF0Zm9ybS1uZXV0cmFsIEFQSSBmb3Igc3lzdGVtIGxldmVsIGFuZCBsaWJj IGxpa2UgZnVuY3QNCm5zcy0zLjEzLjYgICAgICAgICAgTGlicmFyaWVzIHRv IHN1cHBvcnQgZGV2ZWxvcG1lbnQgb2Ygc2VjdXJpdHktZW5hYmxlZCBhcHBs aWMNCm9uaWd1cnVtYS00LjcuMSAgICAgQSBCU0RMIFJlZ3VsYXIgRXhwcmVz c2lvbnMgbGlicmFyeSBjb21wYXRpYmxlIHdpdGggUE9TSVgvR04NCm9wZW4t bW90aWYtMi4zLjNfMiAgTW90aWYgWDExIFRvb2xraXQgKGluZHVzdHJ5IHN0 YW5kYXJkIEdVSSAoSUVFRSAxMjk1KSkNCm9wZW5qYWRlLTEuMy4zcDFfMiAg T2JqZWN0LW9yaWVudGVkIFNHTUwvWE1MIHBhcnNlciB0b29sa2l0IGFuZCBE U1NTTCBlbmdpbmUNCm9wZW5sZGFwLWNsaWVudC0yLjQuMzJfMSBPcGVuIHNv dXJjZSBMREFQIGNsaWVudCBpbXBsZW1lbnRhdGlvbg0KcDExLWtpdC0wLjE0 ICAgICAgICBMaWJyYXJ5IGZvciBsb2FkaW5nIGFuZCBlbnVtZXJhdGluZyBv ZiBQS0NTIzExIG1vZHVsZXMNCnA1LUVycm9yLTAuMTcwMTggICAgUGVybCBt b2R1bGUgdG8gcHJvdmlkZSBFcnJvci9leGNlcHRpb24gc3VwcG9ydCBmb3Ig cGVybDogRXINCnA1LUlPLVNvY2tldC1JTkVUNi0yLjY5IFBlcmwgbW9kdWxl IHdpdGggb2JqZWN0IGludGVyZmFjZSB0byBBRl9JTkVUNiBkb21haW4gc29j a2V0DQpwNS1JTy1Tb2NrZXQtU1NMLTEuNzYgUGVybDUgaW50ZXJmYWNlIHRv IFNTTCBzb2NrZXRzDQpwNS1Mb2NhbGUtZ2V0dGV4dC0xLjA1XzMgTWVzc2Fn ZSBoYW5kbGluZyBmdW5jdGlvbnMNCnA1LU5ldC1TTVRQLVNTTC0xLjAxXzEg QW4gU01UUCBjbGllbnQgc3VwcG9ydGluZyBTU0wNCnA1LU5ldC1TU0xlYXkt MS40OCAgUGVybDUgaW50ZXJmYWNlIHRvIFNTTA0KcDUtU29ja2V0Ni0wLjIz ICAgICBJUHY2IHJlbGF0ZWQgcGFydCBvZiB0aGUgQyBzb2NrZXQuaCBkZWZp bmVzIGFuZCBzdHJ1Y3R1cmUgbQ0KcDUtWE1MLVBhcnNlci0yLjQxICBQZXJs IGV4dGVuc2lvbiBpbnRlcmZhY2UgdG8gSmFtZXMgQ2xhcmsncyBYTUwgcGFy c2VyLCBleHBhdA0KcDUtdHlwZTFpbnN0LTAuNi4xXzUgQSBzY3JpcHQgdGhh dCBoZWxwcyBpbnN0YWxsIFBvc3RzY3JpcHQgZm9udHMgaW4gWCBXaW5kb3cg U3kNCnBhbmdvLTEuMjguNF8xICAgICAgQW4gb3Blbi1zb3VyY2UgZnJhbWV3 b3JrIGZvciB0aGUgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaTENCnBjaWlk cy0yMDEyMDkwNiAgICAgRGF0YWJhc2Ugb2YgYWxsIGtub3duIElEcyB1c2Vk IGluIFBDSSBkZXZpY2VzDQpwY3JlLTguMzEgICAgICAgICAgIFBlcmwgQ29t cGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIGxpYnJhcnkNCnBkZmphbS0y LjA4XzEgICAgICAgU2hlbGwgc2NyaXB0cyB0byBtYW5pcHVsYXRlIFBERiBm aWxlcw0KcGVwcy0yLjBfNSAgICAgICAgICBDb252ZXJ0cyBFUFMgaW1hZ2Vz IHRvIGFudGktYWxpYXNlZCBiaXRtYXBzDQpwZXJsLTUuMTQuMl8yICAgICAg IFByYWN0aWNhbCBFeHRyYWN0aW9uIGFuZCBSZXBvcnQgTGFuZ3VhZ2UNCnBo cDUtNS40LjYgICAgICAgICAgUEhQIFNjcmlwdGluZyBMYW5ndWFnZQ0KcGhw NS1jdHlwZS01LjQuNiAgICBUaGUgY3R5cGUgc2hhcmVkIGV4dGVuc2lvbiBm b3IgcGhwDQpwaHA1LWN1cmwtNS40LjYgICAgIFRoZSBjdXJsIHNoYXJlZCBl eHRlbnNpb24gZm9yIHBocA0KcGhwNS1kb20tNS40LjYgICAgICBUaGUgZG9t IHNoYXJlZCBleHRlbnNpb24gZm9yIHBocA0KcGhwNS1leHRlbnNpb25zLTEu NyBBICJtZXRhLXBvcnQiIHRvIGluc3RhbGwgUEhQIGV4dGVuc2lvbnMNCnBo cDUtZmlsdGVyLTUuNC42ICAgVGhlIGZpbHRlciBzaGFyZWQgZXh0ZW5zaW9u IGZvciBwaHANCnBocDUtZ2QtNS40LjYgICAgICAgVGhlIGdkIHNoYXJlZCBl eHRlbnNpb24gZm9yIHBocA0KcGhwNS1nZXR0ZXh0LTUuNC42ICBUaGUgZ2V0 dGV4dCBzaGFyZWQgZXh0ZW5zaW9uIGZvciBwaHANCnBocDUtaGFzaC01LjQu NiAgICAgVGhlIGhhc2ggc2hhcmVkIGV4dGVuc2lvbiBmb3IgcGhwDQpwaHA1 LWljb252LTUuNC42ICAgIFRoZSBpY29udiBzaGFyZWQgZXh0ZW5zaW9uIGZv ciBwaHANCnBocDUtaW1hcC01LjQuNiAgICAgVGhlIGltYXAgc2hhcmVkIGV4 dGVuc2lvbiBmb3IgcGhwDQpwaHA1LWpzb24tNS40LjYgICAgIFRoZSBqc29u IHNoYXJlZCBleHRlbnNpb24gZm9yIHBocA0KcGhwNS1sZGFwLTUuNC42ICAg ICBUaGUgbGRhcCBzaGFyZWQgZXh0ZW5zaW9uIGZvciBwaHANCnBocDUtbWJz dHJpbmctNS40LjYgVGhlIG1ic3RyaW5nIHNoYXJlZCBleHRlbnNpb24gZm9y IHBocA0KcGhwNS1tY3J5cHQtNS40LjYgICBUaGUgbWNyeXB0IHNoYXJlZCBl eHRlbnNpb24gZm9yIHBocA0KcGhwNS1teXNxbC01LjQuNiAgICBUaGUgbXlz cWwgc2hhcmVkIGV4dGVuc2lvbiBmb3IgcGhwDQpwaHA1LW15c3FsaS01LjQu NiAgIFRoZSBteXNxbGkgc2hhcmVkIGV4dGVuc2lvbiBmb3IgcGhwDQpwaHA1 LW9wZW5zc2wtNS40LjYgIFRoZSBvcGVuc3NsIHNoYXJlZCBleHRlbnNpb24g Zm9yIHBocA0KcGhwNS1wZG8tNS40LjYgICAgICBUaGUgcGRvIHNoYXJlZCBl eHRlbnNpb24gZm9yIHBocA0KcGhwNS1wZG9fc3FsaXRlLTUuNC42IFRoZSBw ZG9fc3FsaXRlIHNoYXJlZCBleHRlbnNpb24gZm9yIHBocA0KcGhwNS1waGFy LTUuNC42ICAgICBUaGUgcGhhciBzaGFyZWQgZXh0ZW5zaW9uIGZvciBwaHAN CnBocDUtcG9zaXgtNS40LjYgICAgVGhlIHBvc2l4IHNoYXJlZCBleHRlbnNp b24gZm9yIHBocA0KcGhwNS1zZXNzaW9uLTUuNC42ICBUaGUgc2Vzc2lvbiBz aGFyZWQgZXh0ZW5zaW9uIGZvciBwaHANCnBocDUtc2ltcGxleG1sLTUuNC42 IFRoZSBzaW1wbGV4bWwgc2hhcmVkIGV4dGVuc2lvbiBmb3IgcGhwDQpwaHA1 LXNvY2tldHMtNS40LjYgIFRoZSBzb2NrZXRzIHNoYXJlZCBleHRlbnNpb24g Zm9yIHBocA0KcGhwNS1zcWxpdGUzLTUuNC42ICBUaGUgc3FsaXRlMyBzaGFy ZWQgZXh0ZW5zaW9uIGZvciBwaHANCnBocDUtdG9rZW5pemVyLTUuNC42IFRo ZSB0b2tlbml6ZXIgc2hhcmVkIGV4dGVuc2lvbiBmb3IgcGhwDQpwaHA1LXht bC01LjQuNiAgICAgIFRoZSB4bWwgc2hhcmVkIGV4dGVuc2lvbiBmb3IgcGhw DQpwaHA1LXhtbHJlYWRlci01LjQuNiBUaGUgeG1scmVhZGVyIHNoYXJlZCBl eHRlbnNpb24gZm9yIHBocA0KcGhwNS14bWx3cml0ZXItNS40LjYgVGhlIHht bHdyaXRlciBzaGFyZWQgZXh0ZW5zaW9uIGZvciBwaHANCnBocDUteHNsLTUu NC42ICAgICAgVGhlIHhzbCBzaGFyZWQgZXh0ZW5zaW9uIGZvciBwaHANCnBo cDUtemxpYi01LjQuNiAgICAgVGhlIHpsaWIgc2hhcmVkIGV4dGVuc2lvbiBm b3IgcGhwDQpwaWNvLWFscGluZS0yLjAwXzEgIFtBbF1QSW5lJ3MgbWVzc2Fn ZSBDT21wb3NpdGlvbiBlZGl0b3IgYW5kIFBpbG90IGZpbGUgbWFuYWdlDQpw aXhtYW4tMC4yNC4yICAgICAgIExvdy1sZXZlbCBwaXhlbCBtYW5pcHVsYXRp b24gbGlicmFyeQ0KcGtnY29uZi0wLjguOSAgICAgICBwa2ctY29uZmlnIGNv bXBhdGlibGUgdXRpbGl0eSB3aGljaCBkb2VzIG5vdCBkZXBlbmQgb24gZ2xp Yg0KcG5nLTEuNS4xMiAgICAgICAgICBMaWJyYXJ5IGZvciBtYW5pcHVsYXRp bmcgUE5HIGltYWdlcw0KcG9saWN5a2l0LTAuOV82ICAgICBGcmFtZXdvcmsg Zm9yIGNvbnRyb2xsaW5nIGFjY2VzcyB0byBzeXN0ZW0td2lkZSBjb21wb25l bnRzDQpwb2xraXQtMC45OSAgICAgICAgIEZyYW1ld29yayBmb3IgY29udHJv bGxpbmcgYWNjZXNzIHRvIHN5c3RlbS13aWRlIGNvbXBvbmVudHMNCnBvcHQt MS4xNiAgICAgICAgICAgQSBnZXRvcHQoMykgbGlrZSBsaWJyYXJ5IHdpdGgg YSBudW1iZXIgb2YgZW5oYW5jZW1lbnRzLCBmcm8NCnBvcnR1cGdyYWRlLTIu NC45LjksMiBGcmVlQlNEIHBvcnRzL3BhY2thZ2VzIGFkbWluaXN0cmF0aW9u IGFuZCBtYW5hZ2VtZW50IHRvb2wgcw0KcHJpbnRwcm90by0xLjAuNSAgICBQ cmludCBleHRlbnNpb24gaGVhZGVycw0KcHN1dGlscy1hNC0xLjE3XzIgICBV dGlsaXRpZXMgZm9yIG1hbmlwdWxhdGluZyBQb3N0U2NyaXB0IGRvY3VtZW50 cw0KcHkyNy1saWJ4bWwyLTIuNy44XzIgUHl0aG9uIGludGVyZmFjZSBmb3Ig WE1MIHBhcnNlciBsaWJyYXJ5IGZvciBHTk9NRQ0KcHl0aG9uMjctMi43LjNf MyAgICBBbiBpbnRlcnByZXRlZCBvYmplY3Qtb3JpZW50ZWQgcHJvZ3JhbW1p bmcgbGFuZ3VhZ2UNCnJhbmRycHJvdG8tMS4zLjIgICAgUmFuZHIgZXh0ZW5z aW9uIGhlYWRlcnMNCnJkaWZmLWJhY2t1cC0xLjIuOCwxIExvY2FsL3JlbW90 ZSBtaXJyb3JpbmcraW5jcmVtZW50YWwgYmFja3VwDQpyZWNvcmRwcm90by0x LjE0LjEgIFJFQ09SRCBleHRlbnNpb24gaGVhZGVycw0KcmVuZGVycHJvdG8t MC4xMS4xICBSZW5kZXJQcm90byBwcm90b2NvbCBoZWFkZXJzDQpyZXNvdXJj ZXByb3RvLTEuMi4wIFJlc291cmNlIGV4dGVuc2lvbiBoZWFkZXJzDQpyc3lu Yy0zLjAuOV8yICAgICAgIEEgbmV0d29yayBmaWxlIGRpc3RyaWJ1dGlvbi9z eW5jaHJvbml6YXRpb24gdXRpbGl0eQ0KcnVieS0xLjguNy4zNzAsMSAgICBB biBvYmplY3Qtb3JpZW50ZWQgaW50ZXJwcmV0ZWQgc2NyaXB0aW5nIGxhbmd1 YWdlDQpydWJ5MTgtYmRiLTAuNi42ICAgIFJ1YnkgaW50ZXJmYWNlIHRvIFNs ZWVweWNhdCdzIEJlcmtlbGV5IERCIHJldmlzaW9uIDIgb3IgbGF0DQpzY3Iy cG5nLTEuMl81ICAgICAgIENvbnZlcnRzIHRoZSBvdXRwdXQgb2YgInZpZGNv bnRyb2wgLXAiIHRvIFBORw0Kc2NyMnR4dC0xLjIgICAgICAgICBDb252ZXJ0 cyB0aGUgb3V0cHV0IG9mICJ2aWRjb250cm9sIC1wIiB0byB0ZXh0DQpzY3Ju c2F2ZXJwcm90by0xLjIuMSBTY3JuU2F2ZXIgZXh0ZW5zaW9uIGhlYWRlcnMN CnNlc3NyZWctMS4wLjcgICAgICAgTWFuYWdlIHV0bXAvd3RtcCBlbnRyaWVz IGZvciBub24taW5pdCBYIGNsaWVudHMNCnNldHhrYm1hcC0xLjIuMCAgICAg U2V0IHRoZSBrZXlib2FyZCB1c2luZyB0aGUgWCBLZXlib2FyZCBFeHRlbnNp b24NCnNoYXJlZC1taW1lLWluZm8tMS4wXzEgQSBNSU1FIHR5cGUgZGF0YWJh c2UgZnJvbSB0aGUgRnJlZURlc2t0b3AgcHJvamVjdA0Kc21wcm94eS0xLjAu NSAgICAgICBTZXNzaW9uIE1hbmFnZXIgUHJveHkNCnNxbGl0ZTMtMy43LjEz ICAgICAgQW4gU1FMIGRhdGFiYXNlIGVuZ2luZSBpbiBhIEMgbGlicmFyeQ0K c3RhcnR1cC1ub3RpZmljYXRpb24tMC4xMiBMaWJyYXJ5IHRoYXQgc3VwcG9y dHMgc3RhcnR1cCBub3RpZmljYXRpb24gc3BlYyBmcm9tIGZyZWVkZQ0Kc3Vi dmVyc2lvbi0xLjYuMTggICBWZXJzaW9uIGNvbnRyb2wgc3lzdGVtDQpzdmdh bGliLTEuNC4zXzYgICAgIEEgbG93IGxldmVsIGNvbnNvbGUgZ3JhcGhpY3Mg bGlicmFyeQ0KdDFsaWItNS4xLjJfMSwxICAgICBBIFR5cGUgMSBSYXN0ZXJp emVyIExpYnJhcnkgZm9yIFVOSVgvWDExDQp0MXV0aWxzLTEuMzIgICAgICAg IFNpeCB1dGlsaXRpZXMgZm9yIG1hbmlwdWxhdGluZyB0MSBmb250cw0KdGNs LTguNS4xMl8yICAgICAgICBUb29sIENvbW1hbmQgTGFuZ3VhZ2UNCnRjbC1t b2R1bGVzLTguNS4xMl8yIFRjbCBjb21tb24gbW9kdWxlcw0KdGVUZVgtMy4w XzYgICAgICAgICBBIG1ldGEgcG9ydCBmb3IgdGVUZVggc3VpdGUNCnRlVGVY LWJhc2UtMy4wXzIzICAgVGhvbWFzIEVzc2VyJ3MgZGlzdHJpYnV0aW9uIG9m IFRlWCAmIGZyaWVuZHMgKGJpbmFyaWVzKQ0KdGVUZVgtdGV4bWYtMy4wXzgg ICBUaG9tYXMgRXNzZXIncyBkaXN0cmlidXRpb24gb2YgVGVYICYgZnJpZW5k cyAodGV4bWYgdHJlZSkNCnRleC10ZXhtZmxvY2FsLTEuOSAgTWV0YS1wb3J0 IHRoYXQgY3JlYXRlcyBhIHNpdGUtbG9jYWwgJFRFWE1GIGRpcmVjdG9yeQ0K dGV4aTJodG1sLTUuMF8xLDEgICBUZXhpbmZvIHRvIEhUTUwgY29udmVydGVy DQp0aWR5LWxpYi0wOTAzMTUuY18xIFV0aWxpdHkgdG8gY2xlYW4gdXAgYW5k IHByZXR0eSBwcmludCBIVE1ML1hIVE1ML1hNTCAod2l0aCBzDQp0aWR5NC0y MDAwMDgwNF8zICAgIEZpeGVzIGFuZCB0aWRpZXMgdXAgSFRNTCBmaWxlcw0K dGlmZi00LjAuMl8xICAgICAgICBUb29scyBhbmQgbGlicmFyeSByb3V0aW5l cyBmb3Igd29ya2luZyB3aXRoIFRJRkYgaW1hZ2VzDQp0cmFwcHJvdG8tMy40 LjMgICAgIERFQy1YVFJBUCBleHRlbnNpb24gaGVhZGVycw0KdHJlZS0xLjUu MyAgICAgICAgICBEaXNwbGF5IGEgdHJlZS12aWV3IG9mIGRpcmVjdG9yaWVz IHdpdGggb3B0aW9uYWwgY29sb3Igb3IgSA0KdHRmMnB0MS0zLjQuNF8yICAg ICBUcnVlIFR5cGUgRm9udCB0byBQb3N0c2NyaXB0IFR5cGUgMSBDb252ZXJ0 ZXINCnR3bS0xLjAuNyAgICAgICAgICAgVGFiIFdpbmRvdyBNYW5hZ2VyIGZv ciB0aGUgWCBXaW5kb3cgU3lzdGVtDQp1bnppcC02LjBfMSAgICAgICAgIExp c3QsIHRlc3QgYW5kIGV4dHJhY3QgY29tcHJlc3NlZCBmaWxlcyBpbiBhIFpJ UCBhcmNoaXZlDQp2NGxfY29tcGF0LTEuMC4yMDEyMDUwMV8xIFZpZGVvNExp bnV4IElPQ1RMIGhlYWRlciBmaWxlcw0KdmFsYS0wLjEyLjEgICAgICAgICBQ cm9ncmFtbWluZyBsYW5ndWFnZSBhbmQgY29tcGlsZXIgdGhhdCBjb252ZXJ0 cyBWYWxhIGNvZGUgaQ0KdmlkZW9wcm90by0yLjMuMSAgICBWaWRlbyBleHRl bnNpb24gaGVhZGVycw0KdmltLTcuMy42MzIgICAgICAgICBWaSAid29ya2Fs aWtlIiwgd2l0aCBtYW55IGFkZGl0aW9uYWwgZmVhdHVyZXMNCnczbS0wLjUu M18xICAgICAgICAgQSBwYWdlci90ZXh0LWJhc2VkIFdXVyBicm93c2VyDQp3 ZWJwLTAuMS4zXzEgICAgICAgIEdvb2dsZSBXZWJQIGltYWdlIGZvcm1hdCBj b252ZXJzaW9uIHRvb2wNCndnZXQtMS4xMy40XzEgICAgICAgUmV0cmlldmUg ZmlsZXMgZnJvbSB0aGUgTmV0IHZpYSBIVFRQKFMpIGFuZCBGVFANCngxMXBl cmYtMS41LjQgICAgICAgWDExIHNlcnZlciBwZXJmb3JtYW5jZSB0ZXN0IHBy b2dyYW0NCnhhdXRoLTEuMC42ICAgICAgICAgWCBhdXRob3JpdHkgZmlsZSB1 dGlsaXR5DQp4YmFja2xpZ2h0LTEuMS4yICAgIFByb2dyYW0gdG8gYWRqdXN0 IGJhY2tsaWdodCBicmlnaHRuZXNzDQp4Yml0bWFwcy0xLjEuMSAgICAgIFgu T3JnIGJpdG1hcHMgZGF0YQ0KeGNhbGMtMS4wLjQuMV8xICAgICBTY2llbnRp ZmljIGNhbGN1bGF0b3IgZm9yIFgNCnhjYi1wcm90by0xLjcuMSAgICAgVGhl IFggcHJvdG9jb2wgQy1sYW5ndWFnZSBCaW5kaW5nIChYQ0IpIHByb3RvY29s DQp4Y2ItdXRpbC0wLjMuOCwxICAgIEEgbW9kdWxlIHdpdGggbGlieGNiL2xp YlgxMSBleHRlbnNpb24vcmVwbGFjZW1lbnQgbGlicmFyaWVzDQp4Y2ItdXRp bC1yZW5kZXJ1dGlsLTAuMy44IENvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3Ig dGhlIFJlbmRlciBleHRlbnNpb24NCnhjbG9jay0xLjAuNiAgICAgICAgQW5h bG9nIGFuZCBkaWdpdGFsIGNsb2NrIGZvciBYDQp4Y21pc2Nwcm90by0xLjIu MSAgIFhDTWlzYyBleHRlbnNpb24gaGVhZGVycw0KeGNtc2RiLTEuMC4zICAg ICAgICBEZXZpY2UgQ29sb3IgQ2hhcmFjdGVyaXphdGlvbiB1dGlsaXR5IGZv ciBYDQp4Y3Vyc29yLXRoZW1lcy0xLjAuM18xIFgub3JnIGN1cnNvcnMgdGhl bWVzDQp4Y3Vyc29yZ2VuLTEuMC40XzEgIENyZWF0ZSBhbiBYIGN1cnNvciBm aWxlIGZyb20gYSBjb2xsZWN0aW9uIG9mIFBORyBpbWFnZXMNCnhkbS0xLjEu MTEgICAgICAgICAgWC5PcmcgWCBkaXNwbGF5IG1hbmFnZXINCnhkcHlpbmZv LTEuMy4wICAgICAgRGlzcGxheSBpbmZvcm1hdGlvbiB1dGlsaXR5IGZvciBY DQp4ZHJpaW5mby0xLjAuNCAgICAgIFF1ZXJ5IGNvbmZpZ3VyYXRpb24gaW5m b3JtYXRpb24gb2YgRFJJIGRyaXZlcnMNCnhkdmlrLXRldGV4LTIyLjg0LjE2 XzQgRFZJIFByZXZpZXdlcihrcGF0aHNlYXJjaCkgZm9yIFgNCnhldi0xLjEu MCAgICAgICAgICAgUHJpbnQgY29udGVudHMgb2YgWCBldmVudHMNCnhleHRw cm90by03LjIuMCAgICAgWEV4dCBleHRlbnNpb24gaGVhZGVycw0KeGY4Ni1p bnB1dC1rZXlib2FyZC0xLjYuMSBYLk9yZyBrZXlib2FyZCBpbnB1dCBkcml2 ZXINCnhmODYtaW5wdXQtbW91c2UtMS43LjEgWC5PcmcgbW91c2UgaW5wdXQg ZHJpdmVyDQp4Zjg2LXZpZGVvLWF0aS02LjE0LjNfMSBYLk9yZyBhdGkgZGlz cGxheSBkcml2ZXINCnhmODYtdmlkZW8taW50ZWwtMi43LjFfNCBEcml2ZXIg Zm9yIEludGVsIGludGVncmF0ZWQgZ3JhcGhpY3MgY2hpcHNldHMNCnhmODYt dmlkZW8tbWFjaDY0LTYuOS4wIFguT3JnIG1hY2g2NCBkaXNwbGF5IGRyaXZl cg0KeGY4Ni12aWRlby1udi0yLjEuMThfMSBYLk9yZyBudiBkaXNwbGF5IGRy aXZlcg0KeGY4Ni12aWRlby1vcGVuY2hyb21lLTAuMi45MDRfMyBYLk9yZyBv cGVuQ2hyb21lIGRpc3BsYXkgZHJpdmVyDQp4Zjg2LXZpZGVvLXIxMjgtNi44 LjFfMyBYLk9yZyByMTI4IGRpc3BsYXkgZHJpdmVyDQp4Zjg2LXZpZGVvLXJh ZGVvbmhkLTEuMy4wXzUgWC5PcmcgYXRpIFJhZGVvbkhEIGRpc3BsYXkgZHJp dmVyDQp4Zjg2LXZpZGVvLXZlc2EtMi4zLjBfMiBYLk9yZyB2ZXNhIGRpc3Bs YXkgZHJpdmVyDQp4Zjg2YmlnZm9udHByb3RvLTEuMi4wIFhGcmVlODYtQmln Zm9udCBleHRlbnNpb24gaGVhZGVycw0KeGY4NmRnYS0xLjAuMyAgICAgICBU ZXN0IHByb2dyYW0gZm9yIHRoZSBYRnJlZTg2LURHQSBleHRlbnNpb24NCnhm ODZkZ2Fwcm90by0yLjEgICAgWEZyZWU4Ni1ER0EgZXh0ZW5zaW9uIGhlYWRl cnMNCnhmODZkcmlwcm90by0yLjEuMSAgWEZyZWU4Ni1EUkkgZXh0ZW5zaW9u IGhlYWRlcnMNCnhmODZtaXNjcHJvdG8tMC45LjMgWEZyZWU4Ni1NaXNjIGV4 dGVuc2lvbiBoZWFkZXJzDQp4Zjg2dmlkbW9kZXByb3RvLTIuMy4xIFhGcmVl ODYtVmlkTW9kZUV4dGVuc2lvbiBleHRlbnNpb24gaGVhZGVycw0KeGdhbW1h LTEuMC40ICAgICAgICBHYW1tYSBjb3JyZWN0aW9uIHRocm91Z2ggdGhlIFgg c2VydmVyLg0KeGdjLTEuMC4zICAgICAgICAgICBYIGdyYXBoaWNzIGRlbW8N Cnhob3N0LTEuMC40ICAgICAgICAgU2VydmVyIGFjY2VzcyBjb250cm9sIHBy b2dyYW0gZm9yIFgNCnhodG1sLTEuMC4yMDAyMDgwMV80IFczQydzIFhIVE1M IERURA0KeGluZXJhbWFwcm90by0xLjIuMSBYaW5lcmFtYSBleHRlbnNpb24g aGVhZGVycw0KeGluaXQtMS4zLjIsMSAgICAgICBYIFdpbmRvdyBTeXN0ZW0g aW5pdGlhbGl6ZXINCnhpbnB1dC0xLjUuNCAgICAgICAgVmVyeSB1c2VmdWwg dXRpbGl0eSBmb3IgY29uZmlndXJpbmcgYW5kIHRlc3RpbmcgWElucHV0IGRl dmkNCnhrYmNvbXAtMS4yLjMgICAgICAgQ29tcGlsZSBYS0Iga2V5Ym9hcmQg ZGVzY3JpcHRpb24NCnhrYmV2ZC0xLjEuMiAgICAgICAgWEtCIGV2ZW50IGRh ZW1vbg0KeGtidXRpbHMtMS4wLjMgICAgICBYS0IgdXRpbGl0eSBkZW1vcw0K eGtleWJvYXJkLWNvbmZpZy0yLjUuMSBYIEtleWJvYXJkIENvbmZpZ3VyYXRp b24gRGF0YWJhc2UNCnhraWxsLTEuMC4zICAgICAgICAgVXRpbGl0eSBmb3Ig a2lsbGluZyBhIGNsaWVudCBieSBpdHMgWCByZXNvdXJjZQ0KeGxzYXRvbXMt MS4xLjAgICAgICBMaXN0IGludGVybmVkIGF0b21zIGRlZmluZWQgb24gYSBz ZXJ2ZXINCnhsc2NsaWVudHMtMS4xLjIgICAgTGlzdCBjbGllbnQgYXBwbGlj YXRpb25zIHJ1bm5pbmcgb24gYSBkaXNwbGF5DQp4bWVzc2FnZS0xLjAuMyAg ICAgIERpc3BsYXkgbWVzc2FnZSBvciBxdWVyeSBpbiBhIFggd2luZG93DQp4 bWxjYXRtZ3ItMi4yICAgICAgIFNHTUwgYW5kIFhNTCBjYXRhbG9nIG1hbmFn ZXINCnhtbGNoYXJlbnQtMC4zXzIgICAgWE1MIGNoYXJhY3RlciBlbnRpdGll cw0KeG1sdG8tMC4wLjI1ICAgICAgICBGcm9udC1lbmQgdG8gYW4gWFNMIHRv b2xjaGFpbg0KeG1vZG1hcC0xLjAuNSAgICAgICBVdGlsaXR5IGZvciBtb2Rp Znlpbmcga2V5bWFwcyBhbmQgcG9pbnRlciBidXR0b24gbWFwcGluZ3MgaQ0K eG9yZy03LjUuMiAgICAgICAgICBYLk9yZyBjb21wbGV0ZSBkaXN0cmlidXRp b24gbWV0YXBvcnQNCnhvcmctYXBwcy03LjUuMiAgICAgWC5vcmcgYXBwcyBt ZXRhLXBvcnQNCnhvcmctY2YtZmlsZXMtMS4wLjQgWC5vcmcgY2YgZmlsZXMg Zm9yIHVzZSB3aXRoIGltYWtlIGJ1aWxkcw0KeG9yZy1kb2NzLTEuNiwxICAg ICBYLm9yZyBkb2N1bWVudGF0aW9uIGZpbGVzDQp4b3JnLWRyaXZlcnMtNy41 LjIgIFgub3JnIGRyaXZlcnMgbWV0YS1wb3J0DQp4b3JnLWZvbnRzLTEwMGRw aS03LjUuMSBYLk9yZyAxMDBkcGkgYml0bWFwIGZvbnRzDQp4b3JnLWZvbnRz LTcuNS4xICAgIFgub3JnIGZvbnRzIG1ldGEtcG9ydA0KeG9yZy1mb250cy03 NWRwaS03LjUuMSBYLk9yZyA3NWRwaSBiaXRtYXAgZm9udHMNCnhvcmctZm9u dHMtY3lyaWxsaWMtNy41LjEgWC5PcmcgQ3lyaWxsaWMgYml0bWFwIGZvbnRz DQp4b3JnLWZvbnRzLW1pc2NiaXRtYXBzLTcuNS4xIFguT3JnIG1pc2NlbGxh bmVvdXMgYml0bWFwIGZvbnRzDQp4b3JnLWZvbnRzLXRydWV0eXBlLTcuNS4x IFguT3JnIFRydWVUeXBlIGZvbnRzDQp4b3JnLWZvbnRzLXR5cGUxLTcuNS4x IFguT3JnIFR5cGUxIGZvbnRzDQp4b3JnLWxpYnJhcmllcy03LjUuMSBYLm9y ZyBsaWJyYXJpZXMgbWV0YS1wb3J0DQp4b3JnLW1hY3Jvcy0xLjE2LjEgIFgu T3JnIGRldmVsb3BtZW50IGFjbG9jYWwgbWFjcm9zDQp4b3JnLXNlcnZlci0x LjcuN182LDEgWC5PcmcgWCBzZXJ2ZXIgYW5kIHJlbGF0ZWQgcHJvZ3JhbXMN CnhwZGYtMy4wM18xICAgICAgICAgRGlzcGxheSBQREYgZmlsZXMsIGFuZCBj b252ZXJ0IHRoZW0gdG8gb3RoZXIgZm9ybWF0cw0KeHByLTEuMC4zICAgICAg ICAgICBVdGlsaXR5IGZvciBwcmludGluZyBhbiBYIHdpbmRvdyBkdW1wDQp4 cHJvcC0xLjIuMSAgICAgICAgIFByb3BlcnR5IGRpc3BsYXllciBmb3IgWA0K eHByb3RvLTcuMC4yMiAgICAgICBYMTEgcHJvdG9jb2wgaGVhZGVycw0KeHJh bmRyLTEuMy41ICAgICAgICBQcmltaXRpdmUgY29tbWFuZCBsaW5lIGludGVy ZmFjZSB0byB0aGUgUmFuZFIgZXh0ZW5zaW9uDQp4cmRiLTEuMC45ICAgICAg ICAgIFggc2VydmVyIHJlc291cmNlIGRhdGFiYXNlIHV0aWxpdHkNCnhyZWZy ZXNoLTEuMC40ICAgICAgUmVmcmVzaCBhbGwgb3IgcGFydCBvZiBhbiBYIHNj cmVlbg0KeHNldC0xLjIuMl8xICAgICAgICBVc2VyIHByZWZlcmVuY2UgdXRp bGl0eSBmb3IgWA0KeHNldG1vZGUtMS4wLjAgICAgICBTZXQgdGhlIG1vZGUg Zm9yIGFuIFggSW5wdXQgRGV2aWNlDQp4c2V0cm9vdC0xLjEuMCAgICAgIHJv b3Qgd2luZG93IHBhcmFtZXRlciBzZXR0aW5nIHV0aWxpdHkgZm9yIFgNCnh0 ZXJtLTI4MV8xICAgICAgICAgVGVybWluYWwgZW11bGF0b3IgZm9yIHRoZSBY IFdpbmRvdyBTeXN0ZW0NCnh0cmFucy0xLjIuNiAgICAgICAgQWJzdHJhY3Qg bmV0d29yayBjb2RlIGZvciBYDQp4dmluZm8tMS4xLjEgICAgICAgIFByaW50 IG91dCBYLVZpZGVvIGV4dGVuc2lvbiBhZGFwdG9yIGluZm9ybWF0aW9uDQp4 d2QtMS4wLjQgICAgICAgICAgIER1bXAgYW4gaW1hZ2Ugb2YgYW4gWCB3aW5k b3cNCnh3aW5pbmZvLTEuMS4yICAgICAgV2luZG93IGluZm9ybWF0aW9uIHV0 aWxpdHkgZm9yIFgNCnh3dWQtMS4wLjMgICAgICAgICAgSW1hZ2UgZGlzcGxh eWVyIGZvciBYDQp5YXNtLTEuMi4wICAgICAgICAgIEEgY29tcGxldGUgcmV3 cml0ZSBvZiB0aGUgTkFTTSBhc3NlbWJsZXINCnpoLWFycGhpY3R0Zi0yLjEx XzIgRm91ciBDaGluZXNlIEJpZzUvR0IgVHJ1ZVR5cGUgZm9udHMgbWFkZSBi eSBBcnBoaWMgVGVjaG5vbG8NCnpoLWRvY3Byb2otMC4xLjIwMDYwMzAzXzYg U3VwcG9ydGl2ZSB0b29scyBmb3IgQ2hpbmVzZSBkb2Nwcm9qIGJ1aWxkDQp6 aC10dGYycHQxLTMuNC4wICAgIFRydWUgVHlwZSBGb250IHRvIFBvc3RzY3Jp cHQgVHlwZSAxIENvbnZlcnRlciB3aXRoIGNoaW5lc2UgDQp6aC10dGZtLTAu OS41XzMgICAgIEEgQmlnNS9HQiBlbmhhbmNlZCBUcnVlVHlwZSBGb250IE1h bmFnZXINCnppcC0zLjAgICAgICAgICAgICAgQ3JlYXRlL3VwZGF0ZSBaSVAg ZmlsZXMgY29tcGF0aWJsZSB3aXRoIHBremlwDQo= --825750751-1717337581-1347871617=:42434-- From owner-freebsd-gecko@FreeBSD.ORG Mon Sep 17 09:19:12 2012 Return-Path: Delivered-To: gecko@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DD8CB106566B for ; Mon, 17 Sep 2012 09:19:12 +0000 (UTC) (envelope-from zeising@daemonic.se) Received: from mail.lysator.liu.se (mail.lysator.liu.se [IPv6:2001:6b0:17:f0a0::3]) by mx1.freebsd.org (Postfix) with ESMTP id 3B34F8FC14 for ; Mon, 17 Sep 2012 09:19:12 +0000 (UTC) Received: from mail.lysator.liu.se (localhost [127.0.0.1]) by mail.lysator.liu.se (Postfix) with ESMTP id 4E72640006 for ; Mon, 17 Sep 2012 11:19:10 +0200 (CEST) Received: by mail.lysator.liu.se (Postfix, from userid 1004) id 4407D40005; Mon, 17 Sep 2012 11:19:10 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on bernadotte.lysator.liu.se X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=AWL autolearn=disabled version=3.3.1 X-Spam-Score: 0.0 Received: from mx.daemonic.se (h-45-105.a163.priv.bahnhof.se [94.254.45.105]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.lysator.liu.se (Postfix) with ESMTPSA id E3DA640003; Mon, 17 Sep 2012 11:19:08 +0200 (CEST) Received: from mailscanner.daemonic.se (mailscanner.daemonic.se [IPv6:2001:470:dca9:0:1::6]) by mx.daemonic.se (Postfix) with ESMTPS id 3XL1x83fN9z8gtM; Mon, 17 Sep 2012 11:19:08 +0200 (CEST) X-Virus-Scanned: amavisd-new at daemonic.se Received: from mx.daemonic.se ([IPv6:2001:470:dca9:0:1::3]) (using TLS with cipher CAMELLIA256-SHA) by mailscanner.daemonic.se (mailscanner.daemonic.se [2001:470:dca9:0:1::6]) (amavisd-new, port 10025) with ESMTPS id uWcB_UKy2HjZ; Mon, 17 Sep 2012 11:19:03 +0200 (CEST) Received: from mail.daemonic.se (mail.daemonic.se [10.1.0.4]) by mx.daemonic.se (Postfix) with ESMTPS id 3XL1x32237z8gtL; Mon, 17 Sep 2012 11:19:03 +0200 (CEST) Received: from [IPv6:2001:470:dca9:1::4] (vivi.daemonic.se [IPv6:2001:470:dca9:1::4]) by mail.daemonic.se (Postfix) with ESMTPSA id 3XL1x30hlLz9Ctj; Mon, 17 Sep 2012 11:19:03 +0200 (CEST) Message-ID: <5056EB01.5060207@daemonic.se> Date: Mon, 17 Sep 2012 11:18:57 +0200 From: Niclas Zeising User-Agent: Mutt/1.5.21 MIME-Version: 1.0 To: Pieter Donche References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV using ClamSMTP Cc: gecko@FreeBSD.org Subject: Re: problem upgrade libxul-1.9.2.28_1 -> 10.0.7 X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Sep 2012 09:19:13 -0000 On 2012-09-17 10:46, Pieter Donche wrote: > Hi, > > During my weekly portupgrade I got this error: > > ... > ===> Running ldconfig > /sbin/ldconfig -m /usr/local/lib > ===> Registering installation for startup-notification-0.12 > ===> Building package for startup-notification-0.12 > ===> Returning to build of libxul-10.0.7 > ===> libxul-10.0.7 depends on shared library: iconv.3 - found > ===> libxul-10.0.7 depends on shared library: GL.1 - found > ===> libxul-10.0.7 depends on shared library: atk-1.0.0 - found > ===> libxul-10.0.7 depends on shared library: glib-2.0.0 - found > ===> libxul-10.0.7 depends on shared library: gtk-x11-2.0.0 - found > ===> libxul-10.0.7 depends on shared library: IDL-2.0 - found > ===> libxul-10.0.7 depends on shared library: pango-1.0.0 - found > ===> Configuring for libxul-10.0.7 > (cd /usr/ports/www/libxul/work/mozilla-esr10 && > /usr/local/bin/autoconf-2.13) > (cd /usr/ports/www/libxul/work/mozilla-esr10/js/src/ && > /usr/local/bin/autoconf- > 2.13) > Adding configure options from > /usr/ports/www/libxul/work/mozilla-esr10/./.mozcon > fig: > --enable-application=xulrunner > --prefix=/usr/ports/www/libxul/work/fake > --enable-system-cairo > --enable-system-pixman > etc... > ... > --disable-debug > --disable-logging > --disable-logging > configure: warning: x86_64-portbld-freebsd8.3: invalid host type > creating cache ./config.cache > checking host system type... x86_64-portbld-freebsd8.3 > checking target system type... x86_64-portbld-freebsd8.3 > checking build system type... x86_64-portbld-freebsd8.3 > etc... > ... > checking for png_get_valid in -lpng... yes > checking for png_get_acTL in -lpng... no > configure: error: --with-system-png won't work because the system's > libpng doesn > 't have APNG support ^^^^^^^^^^^^^^^^^^^^^^^^ Here is the issue. > ===> Script "configure" failed unexpectedly. > Please report the problem to gecko@FreeBSD.org [maintainer] and attach the > "/usr/ports/www/libxul/work/mozilla-esr10/config.log" including the output > of the failure of your make command. Also, it might be a good idea to > provide > an overview of all packages installed on your system (e.g. a > /usr/sbin/pkg_info > -Ea). > *** Error code 1 > > Stop in /usr/ports/www/libxul. > *** Error code 1 > > Stop in /usr/ports/www/libxul. > ---> Build of www/libxul ended at: Mon, 17 Sep 2012 10:01:55 +0200 > (consumed 00 > :12:14) > ---> Upgrade of www/libxul ended at: Mon, 17 Sep 2012 10:01:55 +0200 > (consumed > 00:12:14) > ---> ** Upgrade tasks 3: 1 done, 0 ignored, 0 skipped and 1 failed > > + security/p11-kit (p11-kit-0.13 -> p11-kit-0.14) > ! www/libxul (libxul-1.9.2.28_1) (configure error) > + graphics/ImageMagick (ImageMagick-6.7.8.6 -> ImageMagick-6.7.9.4) > ---> Packages processed: 2 done, 0 ignored, 0 skipped and 1 failed > > > What's wrong here and how to fix? > I included in attachment > /usr/ports/www/libxul/work/mozilla-esr10/config.log > and output of /usr/sbin/pkg_info -Ea Reinstall graphics/png with aping support. -- Niclas From owner-freebsd-gecko@FreeBSD.ORG Mon Sep 17 11:07:26 2012 Return-Path: Delivered-To: gecko@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CAF5D1065673 for ; Mon, 17 Sep 2012 11:07:26 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 9C70F8FC1D for ; Mon, 17 Sep 2012 11:07:26 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q8HB7QU4004729 for ; Mon, 17 Sep 2012 11:07:26 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q8HB7Q6s004727 for gecko@FreeBSD.org; Mon, 17 Sep 2012 11:07:26 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 17 Sep 2012 11:07:26 GMT Message-Id: <201209171107.q8HB7Q6s004727@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: gecko@FreeBSD.org Cc: Subject: Current problem reports assigned to gecko@FreeBSD.org X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Sep 2012 11:07:26 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o ports/171566 gecko www/libxul: ./jscompartment.h:394:8: error: visibility o ports/171534 gecko www/firefox doesn't use system hunspell dictionary p ports/171255 gecko Fix www/firefox on FreeBSD 7.4/amd64 o ports/171219 gecko www/firefox-i18n russian language pack don't translate o ports/170402 gecko www/linux-firefox: crash with flashplugin o ports/170310 gecko mail/thunderbird: coredump/crash when used with OpenLD o ports/169729 gecko www/firefox-esr "make package" produces package with z o ports/169366 gecko www/xpi-* ports need re-install after each Firefox upd o ports/169241 gecko www/firefox Right mouse buttom click freeze screen o ports/168091 gecko Mk/bsd.gecko.mk error: USE_FIREFOX doesn't work correc o ports/167397 gecko mail/thunderbird-i18n Version 12.0 and freebsd 9.0: ca o ports/167298 gecko mail/thunderbird-i18n and www/firefox-i18n fail to fet f ports/165263 gecko mail/thunderbird: core dumping most time when users ar o ports/164239 gecko [PATCH] mail/thunderbird: crash with nss_ldap o ports/164013 gecko www/firefox: Firefox-9 Icons & xpi-addons from ports o ports/162939 gecko www/firefox crashes with Zotero add-on o ports/162075 gecko www/firefox >= 7.0.1_2 bug with respect to pentadactyl o ports/160387 gecko security/ca_root_nss: Allow user to trust extra local o ports/156335 gecko www/firefox: Repeatable firefox-4.0_1,1 crash f ports/155949 gecko www/firefox: firefox 4, WITH_PGO, better Text against o ports/144044 gecko [PATCH] www/firefox: Makefile.webplugins target order 21 problems total. From owner-freebsd-gecko@FreeBSD.ORG Wed Sep 19 13:50:10 2012 Return-Path: Delivered-To: gecko@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA7361065672 for ; Wed, 19 Sep 2012 13:50:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 954598FC0C for ; Wed, 19 Sep 2012 13:50:10 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q8JDoAjB028179 for ; Wed, 19 Sep 2012 13:50:10 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q8JDoAMm028178; Wed, 19 Sep 2012 13:50:10 GMT (envelope-from gnats) Date: Wed, 19 Sep 2012 13:50:10 GMT Message-Id: <201209191350.q8JDoAMm028178@freefall.freebsd.org> To: gecko@FreeBSD.org From: "O. Hartmann" Cc: Subject: Re: ports/171566: www/libxul: ./jscompartment.h:394:8: error: visibility does not match previous declaration X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: "O. Hartmann" List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Sep 2012 13:50:10 -0000 The following reply was made to PR ports/171566; it has been noted by GNATS. From: "O. Hartmann" To: bug-followup@FreeBSD.org, ohartman@zedat.fu-berlin.de Cc: Subject: Re: ports/171566: www/libxul: ./jscompartment.h:394:8: error: visibility does not match previous declaration Date: Wed, 19 Sep 2012 15:47:38 +0200 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig53AF9CCC3E782D2793602C0B Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable If compiled with USE_GCC=3D4.6+, port www/libxul compiles, but fails installing: /usr/ports/www/libxul/work/mozilla-esr10/dist/bin/xpcshell: Undefined symbol "JSVAL_NULL" gmake[1]: *** [install] Error 1 gmake[1]: Leaving directory `/usr/ports/www/libxul/work/mozilla-esr10/xulrunner/installer' gmake: *** [install] Error 2 *** [gecko-pre-install] Error code 2 Stop in /usr/ports/www/libxul. *** [install] Error code 1 Stop in /usr/ports/www/libxul. --------------enig53AF9CCC3E782D2793602C0B Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (FreeBSD) iQEcBAEBAgAGBQJQWc0EAAoJEOgBcD7A/5N8pMIH/3iweNApfIO1GQuXDOd4sIg5 kuvH7XbfjVcqhWDpjvguOCGFeaXXvHommc2SGmO/pPEQQuyRBPKP64cTOnTRx5x9 8TpIdGglGPT2RF/WDUq8zJSOAWmAl2dp0dUqSVVOKFsOmCIof05LUlwzU/sR7M3i tMh0eTNrHNI9SKMpHKkF9DMshJn5c1I20WExvlRrtlY8FrNVzwmX74+luTMc6hHs 9XehwMrUv5qEthcXnPMAV0J/c7krwAYELcCBDm7XQyZFxutymkgb294oNdEmoL/2 3nelFIYrHTr3bRUPUXZWydFCvKIpkK0TPbRnxc31qw2hAn1AlfSXqZCeJXSyXwI= =BoEa -----END PGP SIGNATURE----- --------------enig53AF9CCC3E782D2793602C0B-- From owner-freebsd-gecko@FreeBSD.ORG Fri Sep 21 16:04:28 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 00B521065676 for ; Fri, 21 Sep 2012 16:04:28 +0000 (UTC) (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.245.56]) by mx1.freebsd.org (Postfix) with ESMTP id 6AC028FC08 for ; Fri, 21 Sep 2012 16:04:26 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.245.56]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id q8LG4Jw3070470 for ; Fri, 21 Sep 2012 16:04:19 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id q8LG4Ela069494 for freebsd-gecko@freebsd.org; Fri, 21 Sep 2012 16:04:14 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Fri, 21 Sep 2012 16:04:14 GMT Message-Id: <201209211604.q8LG4Ela069494@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [SVN-Commit] r1020 - in trunk/www: firefox firefox-nightly libxul seamonkey X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Sep 2012 16:04:28 -0000 Author: jbeich Date: Fri Sep 21 16:04:14 2012 New Revision: 1020 Log: switch to ALSA, it's better maintained upstream Thunderbird left as is. Its primary function is email/news client, not a podcast/youtube viewer. And for trivial sound notifications OSS should be enough. Depends on: ports/170473 Modified: trunk/www/firefox-nightly/Makefile trunk/www/firefox/Makefile trunk/www/libxul/Makefile trunk/www/seamonkey/Makefile Modified: trunk/www/firefox-nightly/Makefile ============================================================================== --- trunk/www/firefox-nightly/Makefile Sun Sep 16 10:25:07 2012 (r1019) +++ trunk/www/firefox-nightly/Makefile Fri Sep 21 16:04:14 2012 (r1020) @@ -59,6 +59,9 @@ .endif .include "${.CURDIR}/../../www/firefox/Makefile.options" + +OPTIONS_DEFAULT:=${OPTIONS_DEFAULT:S/OSS/ALSA/} + .include WRKSRC:= ${WRKSRC}-central-${HGREV:C/.*://} Modified: trunk/www/firefox/Makefile ============================================================================== --- trunk/www/firefox/Makefile Sun Sep 16 10:25:07 2012 (r1019) +++ trunk/www/firefox/Makefile Fri Sep 21 16:04:14 2012 (r1020) @@ -51,6 +51,9 @@ OPTIONS_DEFINE= GSTREAMER PGO .include "${.CURDIR}/../../www/firefox/Makefile.options" + +OPTIONS_DEFAULT:=${OPTIONS_DEFAULT:S/OSS/ALSA/} + .include WRKSRC:= ${WRKDIR}/mozilla-beta Modified: trunk/www/libxul/Makefile ============================================================================== --- trunk/www/libxul/Makefile Sun Sep 16 10:25:07 2012 (r1019) +++ trunk/www/libxul/Makefile Fri Sep 21 16:04:14 2012 (r1020) @@ -54,6 +54,9 @@ OPTIONS_DEFINE= GSTREAMER .include "${.CURDIR}/../../www/firefox/Makefile.options" + +OPTIONS_DEFAULT:=${OPTIONS_DEFAULT:S/OSS/ALSA/} + .include .if ${USE_MOZILLA:M-nss} Modified: trunk/www/seamonkey/Makefile ============================================================================== --- trunk/www/seamonkey/Makefile Sun Sep 16 10:25:07 2012 (r1019) +++ trunk/www/seamonkey/Makefile Fri Sep 21 16:04:14 2012 (r1020) @@ -54,6 +54,9 @@ MAILNEWS_DESC?= Mail and News modules .include "${.CURDIR}/../../www/firefox/Makefile.options" + +OPTIONS_DEFAULT:=${OPTIONS_DEFAULT:S/OSS/ALSA/} + .include WRKSRC= ${WRKDIR}/comm-beta From owner-freebsd-gecko@FreeBSD.ORG Fri Sep 21 16:09:00 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 91DF81065672 for ; Fri, 21 Sep 2012 16:09:00 +0000 (UTC) (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.245.56]) by mx1.freebsd.org (Postfix) with ESMTP id 3414D8FC08 for ; Fri, 21 Sep 2012 16:08:59 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.245.56]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id q8LG8x3O079683 for ; Fri, 21 Sep 2012 16:08:59 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id q8LG8sUH078469 for freebsd-gecko@freebsd.org; Fri, 21 Sep 2012 16:08:54 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Fri, 21 Sep 2012 16:08:54 GMT Message-Id: <201209211608.q8LG8sUH078469@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [SVN-Commit] r1021 - in trunk: mail/thunderbird-esr/files mail/thunderbird/files www/firefox-esr/files www/firefox/files www/libxul-esr/files www/libxul/files www/seamonkey/files X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Sep 2012 16:09:00 -0000 Author: jbeich Date: Fri Sep 21 16:08:53 2012 New Revision: 1021 Log: explicitly include sys/types.h for lwpid_t Modified: trunk/mail/thunderbird-esr/files/patch-bug753046 trunk/mail/thunderbird/files/patch-bug753046 trunk/www/firefox-esr/files/patch-bug753046 trunk/www/firefox/files/patch-bug753046 trunk/www/libxul-esr/files/patch-bug753046 trunk/www/libxul/files/patch-bug753046 trunk/www/seamonkey/files/patch-bug753046 Modified: trunk/mail/thunderbird-esr/files/patch-bug753046 ============================================================================== --- trunk/mail/thunderbird-esr/files/patch-bug753046 Fri Sep 21 16:04:14 2012 (r1020) +++ trunk/mail/thunderbird-esr/files/patch-bug753046 Fri Sep 21 16:08:53 2012 (r1021) @@ -451,7 +451,7 @@ --- mozilla/ipc/chromium/src/base/platform_thread.h.orig 2011-12-20 23:28:19.000000000 +0000 +++ mozilla/ipc/chromium/src/base/platform_thread.h -@@ -22,9 +22,11 @@ typedef void* PlatformThreadHandle; // HANDLE +@@ -22,9 +22,12 @@ typedef void* PlatformThreadHandle; // HANDLE #elif defined(OS_POSIX) #include typedef pthread_t PlatformThreadHandle; @@ -460,6 +460,7 @@ #include typedef pid_t PlatformThreadId; +#elif defined(OS_BSD) ++#include +typedef lwpid_t PlatformThreadId; #elif defined(OS_MACOSX) #include Modified: trunk/mail/thunderbird/files/patch-bug753046 ============================================================================== --- trunk/mail/thunderbird/files/patch-bug753046 Fri Sep 21 16:04:14 2012 (r1020) +++ trunk/mail/thunderbird/files/patch-bug753046 Fri Sep 21 16:08:53 2012 (r1021) @@ -456,7 +456,7 @@ --- mozilla/ipc/chromium/src/base/platform_thread.h.orig 2011-12-20 23:28:19.000000000 +0000 +++ mozilla/ipc/chromium/src/base/platform_thread.h -@@ -22,9 +22,11 @@ typedef void* PlatformThreadHandle; // HANDLE +@@ -22,9 +22,12 @@ typedef void* PlatformThreadHandle; // HANDLE #elif defined(OS_POSIX) #include typedef pthread_t PlatformThreadHandle; @@ -465,6 +465,7 @@ #include typedef pid_t PlatformThreadId; +#elif defined(OS_BSD) ++#include +typedef lwpid_t PlatformThreadId; #elif defined(OS_MACOSX) #include Modified: trunk/www/firefox-esr/files/patch-bug753046 ============================================================================== --- trunk/www/firefox-esr/files/patch-bug753046 Fri Sep 21 16:04:14 2012 (r1020) +++ trunk/www/firefox-esr/files/patch-bug753046 Fri Sep 21 16:08:53 2012 (r1021) @@ -451,7 +451,7 @@ --- ipc/chromium/src/base/platform_thread.h.orig 2011-12-20 23:28:19.000000000 +0000 +++ ipc/chromium/src/base/platform_thread.h -@@ -22,9 +22,11 @@ typedef void* PlatformThreadHandle; // HANDLE +@@ -22,9 +22,12 @@ typedef void* PlatformThreadHandle; // HANDLE #elif defined(OS_POSIX) #include typedef pthread_t PlatformThreadHandle; @@ -460,6 +460,7 @@ #include typedef pid_t PlatformThreadId; +#elif defined(OS_BSD) ++#include +typedef lwpid_t PlatformThreadId; #elif defined(OS_MACOSX) #include Modified: trunk/www/firefox/files/patch-bug753046 ============================================================================== --- trunk/www/firefox/files/patch-bug753046 Fri Sep 21 16:04:14 2012 (r1020) +++ trunk/www/firefox/files/patch-bug753046 Fri Sep 21 16:08:53 2012 (r1021) @@ -456,7 +456,7 @@ --- ipc/chromium/src/base/platform_thread.h.orig 2011-12-20 23:28:19.000000000 +0000 +++ ipc/chromium/src/base/platform_thread.h -@@ -22,9 +22,11 @@ typedef void* PlatformThreadHandle; // HANDLE +@@ -22,9 +22,12 @@ typedef void* PlatformThreadHandle; // HANDLE #elif defined(OS_POSIX) #include typedef pthread_t PlatformThreadHandle; @@ -465,6 +465,7 @@ #include typedef pid_t PlatformThreadId; +#elif defined(OS_BSD) ++#include +typedef lwpid_t PlatformThreadId; #elif defined(OS_MACOSX) #include Modified: trunk/www/libxul-esr/files/patch-bug753046 ============================================================================== --- trunk/www/libxul-esr/files/patch-bug753046 Fri Sep 21 16:04:14 2012 (r1020) +++ trunk/www/libxul-esr/files/patch-bug753046 Fri Sep 21 16:08:53 2012 (r1021) @@ -451,7 +451,7 @@ --- ipc/chromium/src/base/platform_thread.h.orig 2011-12-20 23:28:19.000000000 +0000 +++ ipc/chromium/src/base/platform_thread.h -@@ -22,9 +22,11 @@ typedef void* PlatformThreadHandle; // HANDLE +@@ -22,9 +22,12 @@ typedef void* PlatformThreadHandle; // HANDLE #elif defined(OS_POSIX) #include typedef pthread_t PlatformThreadHandle; @@ -460,6 +460,7 @@ #include typedef pid_t PlatformThreadId; +#elif defined(OS_BSD) ++#include +typedef lwpid_t PlatformThreadId; #elif defined(OS_MACOSX) #include Modified: trunk/www/libxul/files/patch-bug753046 ============================================================================== --- trunk/www/libxul/files/patch-bug753046 Fri Sep 21 16:04:14 2012 (r1020) +++ trunk/www/libxul/files/patch-bug753046 Fri Sep 21 16:08:53 2012 (r1021) @@ -456,7 +456,7 @@ --- ipc/chromium/src/base/platform_thread.h.orig 2011-12-20 23:28:19.000000000 +0000 +++ ipc/chromium/src/base/platform_thread.h -@@ -22,9 +22,11 @@ typedef void* PlatformThreadHandle; // HANDLE +@@ -22,9 +22,12 @@ typedef void* PlatformThreadHandle; // HANDLE #elif defined(OS_POSIX) #include typedef pthread_t PlatformThreadHandle; @@ -465,6 +465,7 @@ #include typedef pid_t PlatformThreadId; +#elif defined(OS_BSD) ++#include +typedef lwpid_t PlatformThreadId; #elif defined(OS_MACOSX) #include Modified: trunk/www/seamonkey/files/patch-bug753046 ============================================================================== --- trunk/www/seamonkey/files/patch-bug753046 Fri Sep 21 16:04:14 2012 (r1020) +++ trunk/www/seamonkey/files/patch-bug753046 Fri Sep 21 16:08:53 2012 (r1021) @@ -456,7 +456,7 @@ --- mozilla/ipc/chromium/src/base/platform_thread.h.orig 2011-12-20 23:28:19.000000000 +0000 +++ mozilla/ipc/chromium/src/base/platform_thread.h -@@ -22,9 +22,11 @@ typedef void* PlatformThreadHandle; // HANDLE +@@ -22,9 +22,12 @@ typedef void* PlatformThreadHandle; // HANDLE #elif defined(OS_POSIX) #include typedef pthread_t PlatformThreadHandle; @@ -465,6 +465,7 @@ #include typedef pid_t PlatformThreadId; +#elif defined(OS_BSD) ++#include +typedef lwpid_t PlatformThreadId; #elif defined(OS_MACOSX) #include From owner-freebsd-gecko@FreeBSD.ORG Sat Sep 22 09:44:56 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DD6311065672 for ; Sat, 22 Sep 2012 09:44:56 +0000 (UTC) (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.245.56]) by mx1.freebsd.org (Postfix) with ESMTP id 6C9ED8FC0A for ; Sat, 22 Sep 2012 09:44:56 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.245.56]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id q8M9itQx033597 for ; Sat, 22 Sep 2012 09:44:55 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id q8M9in1X033146 for freebsd-gecko@freebsd.org; Sat, 22 Sep 2012 09:44:49 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sat, 22 Sep 2012 09:44:49 GMT Message-Id: <201209220944.q8M9in1X033146@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [SVN-Commit] r1022 - trunk/Mk X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 09:44:57 -0000 Author: jbeich Date: Sat Sep 22 09:44:49 2012 New Revision: 1022 Log: add more paths Modified: trunk/Mk/bsd.gecko.mk Modified: trunk/Mk/bsd.gecko.mk ============================================================================== --- trunk/Mk/bsd.gecko.mk Fri Sep 21 16:08:53 2012 (r1021) +++ trunk/Mk/bsd.gecko.mk Sat Sep 22 09:44:49 2012 (r1022) @@ -862,10 +862,12 @@ ${MOZSRC}/build/unix/run-mozilla.sh @${REINPLACE_CMD} -e 's|/usr/local/netscape|${LOCALBASE}|g ; \ s|/usr/local/lib/netscape|${LOCALBASE}/lib|g' \ - ${MOZSRC}/xpcom/*/SpecialSystemDirectory.cpp + ${MOZSRC}/xpcom/io/SpecialSystemDirectory.cpp @${REINPLACE_CMD} -e 's|/etc|${PREFIX}&|g' \ ${MOZSRC}/xpcom/build/nsXPCOMPrivate.h @${REINPLACE_CMD} -e 's|/usr|${LOCALBASE}|g' \ + -e 's|mozilla/plugins|browser_plugins|g' \ + ${MOZSRC}/xpcom/io/nsAppFileLocationProvider.cpp \ ${MOZSRC}/toolkit/xre/nsXREDirProvider.cpp @${GREP} -lr 'PR_LoadLibrary.*\.so\.[0-9]' ${WRKSRC} | ${XARGS} \ ${REINPLACE_CMD} -Ee '/PR_LoadLibrary/s/(\.so)\.[0-9]+/\1/' From owner-freebsd-gecko@FreeBSD.ORG Sat Sep 22 09:45:03 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1CD2B106564A for ; Sat, 22 Sep 2012 09:45:03 +0000 (UTC) (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.245.56]) by mx1.freebsd.org (Postfix) with ESMTP id 9F8328FC0C for ; Sat, 22 Sep 2012 09:45:02 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.245.56]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id q8M9j1sB034603 for ; Sat, 22 Sep 2012 09:45:01 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id q8M9iufZ034226 for freebsd-gecko@freebsd.org; Sat, 22 Sep 2012 09:44:56 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sat, 22 Sep 2012 09:44:56 GMT Message-Id: <201209220944.q8M9iufZ034226@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [SVN-Commit] r1023 - trunk X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 09:45:03 -0000 Author: jbeich Date: Sat Sep 22 09:44:56 2012 New Revision: 1023 Log: - take profiler, almost there - drop PATCHDIR: my impl. works but is unmaintainable (bus factor) - add a few more items Modified: trunk/Gecko_TODO Modified: trunk/Gecko_TODO ============================================================================== --- trunk/Gecko_TODO Sat Sep 22 09:44:49 2012 (r1022) +++ trunk/Gecko_TODO Sat Sep 22 09:44:56 2012 (r1023) @@ -3,7 +3,6 @@ - implement either OSS or GStreamer backend for libcubeb - fix pause latency issue with OSS backend in libsydneyaudio (deprecated) - port WebRTC -- port Gecko Profiler - port Crash Reporter - add BlueGriffon to replace www/kompozer - switch to system libxul (needs slaves with common patches); @@ -13,13 +12,15 @@ - push @plt/.hidden patch for JS upstream (needs a test case) - push system db(3) patch upstream - replace FAKEDIR with STAGEDIR +- get rid of symlink farms for webplugins and xpi-* ports - document GStreamer plugins needed for HTML5 Video (in pkg-message) - document performance issues with non-ESR (layers.acceleration.force-enabled -> true ?) +- mozboot backend for FreeBSD (see bug 790750 for an example) jbeich: - push ALSA patch upstream - push --ignore-unresolved-symbol upstream (needs tests/approval from author) -- remove duplicate patches by using common PATCHDIR - add Gtk3 support (waiting for upstream) - move PGO to bsd.gecko.mk (blocked by USE_PYTHON_BUILD in *-esr) +- port tools/profiler (NS_StackWalk or not?) From owner-freebsd-gecko@FreeBSD.ORG Sat Sep 22 09:45:12 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43109106564A for ; Sat, 22 Sep 2012 09:45:12 +0000 (UTC) (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.245.56]) by mx1.freebsd.org (Postfix) with ESMTP id D3FE78FC12 for ; Sat, 22 Sep 2012 09:45:11 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.245.56]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id q8M9jATY041402 for ; Sat, 22 Sep 2012 09:45:10 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id q8M9j5jG039160 for freebsd-gecko@freebsd.org; Sat, 22 Sep 2012 09:45:05 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sat, 22 Sep 2012 09:45:05 GMT Message-Id: <201209220945.q8M9j5jG039160@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [SVN-Commit] r1024 - in trunk/www: firefox firefox-nightly firefox-nightly/files seamonkey X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 09:45:12 -0000 Author: jbeich Date: Sat Sep 22 09:45:05 2012 New Revision: 1024 Log: update Deleted: trunk/www/firefox-nightly/files/patch-bug789436 trunk/www/firefox-nightly/files/patch-bug789656 trunk/www/firefox-nightly/files/patch-bug791366 Modified: trunk/www/firefox-nightly/Makefile trunk/www/firefox-nightly/Makefile.hgrev trunk/www/firefox-nightly/distinfo trunk/www/firefox/Makefile trunk/www/firefox/distinfo trunk/www/seamonkey/Makefile trunk/www/seamonkey/distinfo Modified: trunk/www/firefox-nightly/Makefile ============================================================================== --- trunk/www/firefox-nightly/Makefile Sat Sep 22 09:44:56 2012 (r1023) +++ trunk/www/firefox-nightly/Makefile Sat Sep 22 09:45:05 2012 (r1024) @@ -19,7 +19,7 @@ BUILD_DEPENDS= nspr>=4.9.2:${PORTSDIR}/devel/nspr \ nss>=3.13.2:${PORTSDIR}/security/nss \ - sqlite3>=3.7.13:${PORTSDIR}/databases/sqlite3 \ + sqlite3>=3.7.14:${PORTSDIR}/databases/sqlite3 \ ${PYTHON_SITELIBDIR}/_sqlite3.so:${PORTSDIR}/databases/py-sqlite3 \ cairo>=1.10.2_1,1:${PORTSDIR}/graphics/cairo \ unzip:${PORTSDIR}/archivers/unzip Modified: trunk/www/firefox-nightly/Makefile.hgrev ============================================================================== --- trunk/www/firefox-nightly/Makefile.hgrev Sat Sep 22 09:44:56 2012 (r1023) +++ trunk/www/firefox-nightly/Makefile.hgrev Sat Sep 22 09:45:05 2012 (r1024) @@ -1 +1 @@ -HGREV= 106949:f39786e8364d +HGREV= 107671:abada9261f82 Modified: trunk/www/firefox-nightly/distinfo ============================================================================== --- trunk/www/firefox-nightly/distinfo Sat Sep 22 09:44:56 2012 (r1023) +++ trunk/www/firefox-nightly/distinfo Sat Sep 22 09:45:05 2012 (r1024) @@ -1,2 +1,2 @@ -SHA256 (firefox-nightly/f39786e8364d.tar.bz2) = a9fc964a2caa291d37d29a901718d70a30c48c276390579f8fcffe34748c3a53 -SIZE (firefox-nightly/f39786e8364d.tar.bz2) = 89130646 +SHA256 (firefox-nightly/abada9261f82.tar.bz2) = 91c60e041e5788feba1819a48b69df3e902a7bf738abd7a8cb9b3a7cc5643cf5 +SIZE (firefox-nightly/abada9261f82.tar.bz2) = 90098597 Deleted: trunk/www/firefox-nightly/files/patch-bug789436 ============================================================================== --- trunk/www/firefox-nightly/files/patch-bug789436 Sat Sep 22 09:45:05 2012 (r1023) +++ /dev/null 00:00:00 1970 (deleted) @@ -1,27 +0,0 @@ ---- toolkit/xre/nsAppRunner.cpp~ -+++ toolkit/xre/nsAppRunner.cpp -@@ -1388,11 +1388,6 @@ static int MSCRTReportHook( int aReportType, char *aMessage, int *oReturnValue) - - #endif - --#if defined(FREEBSD) --// pick up fpsetmask prototype. --#include --#endif -- - static inline void - DumpVersion() - { -@@ -4136,12 +4131,5 @@ SetupErrorHandling(const char* progname) - - // Unbuffer stdout, needed for tinderbox tests. - setbuf(stdout, 0); -- --#if defined(FREEBSD) -- // Disable all SIGFPE's on FreeBSD, as it has non-IEEE-conformant fp -- // trap behavior that trips up on floating-point tests performed by -- // the JS engine. See bugzilla bug 9967 details. -- fpsetmask(0); --#endif - } - Deleted: trunk/www/firefox-nightly/files/patch-bug789656 ============================================================================== --- trunk/www/firefox-nightly/files/patch-bug789656 Sat Sep 22 09:45:05 2012 (r1023) +++ /dev/null 00:00:00 1970 (deleted) @@ -1,11 +0,0 @@ ---- media/libopus/Makefile.in~ -+++ media/libopus/Makefile.in -@@ -20,7 +20,7 @@ DEFINES += \ - -Drestrict= \ - $(NULL) - --ifneq ($(filter $(OS_ARCH),Linux Darwin),) -+ifneq ($(filter $(OS_ARCH),Linux Darwin DragonFly FreeBSD NetBSD OpenBSD),) - DEFINES += -DHAVE_LRINTF - endif - ifeq ($(OS_ARCH), WINNT) Deleted: trunk/www/firefox-nightly/files/patch-bug791366 ============================================================================== --- trunk/www/firefox-nightly/files/patch-bug791366 Sat Sep 22 09:45:05 2012 (r1023) +++ /dev/null 00:00:00 1970 (deleted) @@ -1,95 +0,0 @@ -diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp -index a9aff58..674e757 100644 ---- xpcom/base/nsMemoryReporterManager.cpp -+++ xpcom/base/nsMemoryReporterManager.cpp -@@ -32,7 +32,7 @@ using namespace mozilla; - # include "jemalloc.h" - #endif // MOZ_MEMORY - --#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(SOLARIS) -+#ifdef XP_UNIX - - #include - #include -@@ -95,6 +95,81 @@ static nsresult GetResident(int64_t *n) - return GetProcSelfStatmField(1, n); - } - -+#elif defined(__DragonFly__) || defined(__FreeBSD__) \ -+ || defined(__NetBSD__) || defined(__OpenBSD__) -+ -+#include -+#include -+#if defined(__DragonFly__) || defined(__FreeBSD__) -+#include -+#endif -+ -+#include -+ -+#if defined(__NetBSD__) -+#undef KERN_PROC -+#define KERN_PROC KERN_PROC2 -+#define KINFO_PROC struct kinfo_proc2 -+#else -+#define KINFO_PROC struct kinfo_proc -+#endif -+ -+#if defined(__DragonFly__) -+#define KP_SIZE(kp) (kp.kp_vm_map_size) -+#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize()) -+#elif defined(__FreeBSD__) -+#define KP_SIZE(kp) (kp.ki_size) -+#define KP_RSS(kp) (kp.ki_rssize * getpagesize()) -+#elif defined(__NetBSD__) -+#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize()) -+#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) -+#elif defined(__OpenBSD__) -+#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \ -+ + kp.p_vm_tsize) * getpagesize()) -+#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) -+#endif -+ -+static nsresult GetKinfoProcSelf(KINFO_PROC *proc) -+{ -+ int mib[] = { -+ CTL_KERN, -+ KERN_PROC, -+ KERN_PROC_PID, -+ getpid(), -+#if defined(__NetBSD__) || defined(__OpenBSD__) -+ sizeof(KINFO_PROC), -+ 1, -+#endif -+ }; -+ u_int miblen = sizeof(mib) / sizeof(mib[0]); -+ size_t size = sizeof(KINFO_PROC); -+ if (sysctl(mib, miblen, proc, &size, NULL, 0)) -+ return NS_ERROR_FAILURE; -+ -+ return NS_OK; -+} -+ -+#define HAVE_VSIZE_AND_RESIDENT_REPORTERS 1 -+static nsresult GetVsize(int64_t *n) -+{ -+ KINFO_PROC proc; -+ nsresult rv = GetKinfoProcSelf(&proc); -+ if (NS_SUCCEEDED(rv)) -+ *n = KP_SIZE(proc); -+ -+ return rv; -+} -+ -+static nsresult GetResident(int64_t *n) -+{ -+ KINFO_PROC proc; -+ nsresult rv = GetKinfoProcSelf(&proc); -+ if (NS_SUCCEEDED(rv)) -+ *n = KP_RSS(proc); -+ -+ return rv; -+} -+ - #elif defined(SOLARIS) - - #include Modified: trunk/www/firefox/Makefile ============================================================================== --- trunk/www/firefox/Makefile Sat Sep 22 09:44:56 2012 (r1023) +++ trunk/www/firefox/Makefile Sat Sep 22 09:45:05 2012 (r1024) @@ -6,7 +6,7 @@ # PORTNAME= firefox -DISTVERSION= 16.0b2 +DISTVERSION= 16.0b4 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= ${MASTER_SITE_MOZILLA} Modified: trunk/www/firefox/distinfo ============================================================================== --- trunk/www/firefox/distinfo Sat Sep 22 09:44:56 2012 (r1023) +++ trunk/www/firefox/distinfo Sat Sep 22 09:45:05 2012 (r1024) @@ -1,2 +1,2 @@ -SHA256 (firefox-16.0b2.source.tar.bz2) = cb578278304815992144703de1a0d85fdadcf683cb501398c668be8cef9c2be6 -SIZE (firefox-16.0b2.source.tar.bz2) = 89195582 +SHA256 (firefox-16.0b4.source.tar.bz2) = 2ac8065bb32a3cfe5de791042caf6141f833a980f559f72e4813c17e23697ee8 +SIZE (firefox-16.0b4.source.tar.bz2) = 89186049 Modified: trunk/www/seamonkey/Makefile ============================================================================== --- trunk/www/seamonkey/Makefile Sat Sep 22 09:44:56 2012 (r1023) +++ trunk/www/seamonkey/Makefile Sat Sep 22 09:45:05 2012 (r1024) @@ -6,7 +6,7 @@ # PORTNAME= seamonkey -DISTVERSION= 2.13b2 +DISTVERSION= 2.13b3 CATEGORIES?= www ipv6 MASTER_SITES= ${MASTER_SITE_MOZILLA_EXTENDED} MASTER_SITE_SUBDIR= seamonkey/releases/${DISTVERSION}/source Modified: trunk/www/seamonkey/distinfo ============================================================================== --- trunk/www/seamonkey/distinfo Sat Sep 22 09:44:56 2012 (r1023) +++ trunk/www/seamonkey/distinfo Sat Sep 22 09:45:05 2012 (r1024) @@ -1,2 +1,2 @@ -SHA256 (seamonkey-2.13b2.source.tar.bz2) = 5155525fa20867729dc7dbcf0ffb04ef351de3857f9f195bf9730896a3612fc6 -SIZE (seamonkey-2.13b2.source.tar.bz2) = 112028251 +SHA256 (seamonkey-2.13b3.source.tar.bz2) = eb22e00a0ab091c189e7048fcbeeb6469759603290556a5ff36c6961950aa14d +SIZE (seamonkey-2.13b3.source.tar.bz2) = 112000158 From owner-freebsd-gecko@FreeBSD.ORG Sat Sep 22 09:45:22 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C3534106564A for ; Sat, 22 Sep 2012 09:45:22 +0000 (UTC) (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.245.56]) by mx1.freebsd.org (Postfix) with ESMTP id 0217B8FC08 for ; Sat, 22 Sep 2012 09:45:21 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.245.56]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id q8M9jL0M043269 for ; Sat, 22 Sep 2012 09:45:21 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id q8M9jFgL042301 for freebsd-gecko@freebsd.org; Sat, 22 Sep 2012 09:45:15 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sat, 22 Sep 2012 09:45:15 GMT Message-Id: <201209220945.q8M9jFgL042301@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [SVN-Commit] r1025 - in trunk: mail/thunderbird/files www/firefox-nightly/files www/firefox/files www/libxul/files www/seamonkey/files X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 09:45:22 -0000 Author: jbeich Date: Sat Sep 22 09:45:15 2012 New Revision: 1025 Log: sync with bug 788955 Modified: trunk/mail/thunderbird/files/patch-bug788955 trunk/www/firefox-nightly/files/patch-bug788955 trunk/www/firefox/files/patch-bug788955 trunk/www/libxul/files/patch-bug788955 trunk/www/seamonkey/files/patch-bug788955 Modified: trunk/mail/thunderbird/files/patch-bug788955 ============================================================================== --- trunk/mail/thunderbird/files/patch-bug788955 Sat Sep 22 09:45:05 2012 (r1024) +++ trunk/mail/thunderbird/files/patch-bug788955 Sat Sep 22 09:45:15 2012 (r1025) @@ -1,16 +1,31 @@ diff --git Makefile.in Makefile.in -index e341462..26d19ad 100644 +index e341462..f75bd55 100644 --- mozilla/Makefile.in +++ mozilla/Makefile.in -@@ -47,7 +47,7 @@ endif - +@@ -48,8 +48,10 @@ endif ifdef MOZ_MEMORY tier_base_dirs += memory/mozjemalloc --ifdef MOZ_JEMALLOC -+ifeq (1_,$(MOZ_JEMALLOC)_$(MOZ_NATIVE_JEMALLOC)) + ifdef MOZ_JEMALLOC ++ifndef MOZ_NATIVE_JEMALLOC tier_base_dirs += memory/jemalloc endif ++endif tier_base_dirs += memory/build + endif + ifndef MOZ_NATIVE_ZLIB +diff --git allmakefiles.sh allmakefiles.sh +index 6a9be4b..544beff 100755 +--- mozilla/allmakefiles.sh ++++ mozilla/allmakefiles.sh +@@ -59,7 +59,7 @@ if [ ! "$LIBXUL_SDK" ]; then + mozglue/Makefile + mozglue/build/Makefile + " +- if [ "$MOZ_JEMALLOC" ]; then ++ if [ "$MOZ_JEMALLOC" -a ! "$MOZ_NATIVE_JEMALLOC" ]; then + add_makefiles " + memory/jemalloc/Makefile + " --- mozilla/config/autoconf.mk.in +++ mozilla/config/autoconf.mk.in @@ -74,6 +74,7 @@ MOZ_JSDEBUGGER = @MOZ_JSDEBUGGER@ @@ -22,10 +37,10 @@ MOZ_ENABLE_PROFILER_SPS = @MOZ_ENABLE_PROFILER_SPS@ MOZ_JPROF = @MOZ_JPROF@ diff --git configure.in configure.in -index 4070d8c..3b39473 100644 +index cfcdbc0..ee9a299 100644 --- mozilla/configure.in +++ mozilla/configure.in -@@ -3670,21 +3670,22 @@ fi +@@ -3730,21 +3730,22 @@ fi dnl Check for the existence of various allocation headers/functions @@ -57,45 +72,100 @@ dnl See if compiler supports some gcc-style attributes AC_CACHE_CHECK(for __attribute__((always_inline)), -@@ -6902,7 +6903,21 @@ if test -z "$MOZ_MEMORY"; then - AC_MSG_WARN([When not building jemalloc, you need to set WIN32_REDIST_DIR to the path to the Visual C++ Redist (usually VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT, for VC++ v8) if you intend to distribute your build.]) - fi - ;; -+ *-freebsd*) -+ MOZ_JEMALLOC=1 -+ ;; - esac -+ +@@ -6960,6 +6961,18 @@ else + fi + + if test -z "$MOZ_MEMORY"; then + if test -n "$MOZ_JEMALLOC"; then -+ AC_CHECK_FUNCS(mallctl nallocm, -+ [MOZ_NATIVE_JEMALLOC=1 MOZ_MEMORY=1], -+ [MOZ_NATIVE_JEMALLOC= MOZ_MEMORY=]) ++ MOZ_NATIVE_JEMALLOC=1 ++ AC_CHECK_FUNCS(mallctl nallocm,, ++ [MOZ_NATIVE_JEMALLOC= ++ break]) ++ if test -n "$MOZ_NATIVE_JEMALLOC"; then ++ MOZ_MEMORY=1 ++ AC_DEFINE(MOZ_MEMORY) ++ AC_DEFINE(MOZ_JEMALLOC) ++ AC_DEFINE(MOZ_NATIVE_JEMALLOC) ++ fi + fi -+ if test -n "$MOZ_NATIVE_JEMALLOC"; then -+ AC_DEFINE(MOZ_NATIVE_JEMALLOC) -+ AC_DEFINE(MOZ_MEMORY) -+ AC_DEFINE(MOZ_JEMALLOC) -+ fi - else - dnl Don't try to run compiler tests on Windows - if test "$OS_ARCH" = "WINNT"; then -@@ -6988,6 +7003,7 @@ else - ;; - esac + case "${target}" in + *-mingw*) + if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then +@@ -7054,6 +7067,7 @@ else fi # MOZ_MEMORY -+AC_SUBST(MOZ_NATIVE_JEMALLOC) AC_SUBST(MOZ_MEMORY) AC_SUBST(MOZ_JEMALLOC) ++AC_SUBST(MOZ_NATIVE_JEMALLOC) AC_SUBST(MOZ_GLUE_LDFLAGS) -@@ -8754,7 +8770,7 @@ fi + AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS) + AC_SUBST(WIN32_CRT_LIBS) +@@ -8819,10 +8833,27 @@ fi # Run jemalloc configure script -if test "$MOZ_JEMALLOC" -a "$MOZ_MEMORY"; then +if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_JEMALLOC" -a "$MOZ_MEMORY" ; then ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_" - if test "$OS_ARCH" = "Linux"; then - MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" +- if test "$OS_ARCH" = "Linux"; then +- MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" ++ case "$OS_ARCH" in ++ Linux) ++ MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" ++ ;; ++ DragonFly|NetBSD|OpenBSD) ++ MANGLE="malloc calloc valloc free realloc posix_memalign" ++ ;; ++ FreeBSD) ++ # common ++ MANGLE="malloc calloc valloc free realloc posix_memalign malloc_usable_size" ++ # old jemalloc ++ MANGLE="$MANGLE reallocf _malloc_message _malloc_options" ++ # jemalloc 3.0.0 ++ MANGLE="$MANGLE aligned_alloc malloc_message malloc_conf" ++ MANGLE="$MANGLE malloc_stats_print mallctl mallctlnametomib mallctlbymib" ++ MANGLE="$MANGLE allocm rallocm sallocm dallocm nallocm" ++ ;; ++ esac ++ if test -n "$MANGLE"; then + MANGLED= + JEMALLOC_WRAPPER= + if test -n "$_WRAP_MALLOC"; then +diff --git js/src/configure.in js/src/configure.in +index 846482c..4022506 100644 +--- mozilla/js/src/configure.in ++++ mozilla/js/src/configure.in +@@ -3094,21 +3094,22 @@ fi + + dnl Check for the existence of various allocation headers/functions + ++MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h" + MALLOC_H= +-MOZ_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h]) +-if test "$MALLOC_H" = ""; then +- MOZ_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h]) +- if test "$MALLOC_H" = ""; then +- MOZ_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h]) ++ ++for file in $MALLOC_HEADERS; do ++ MOZ_CHECK_HEADER($file, [MALLOC_H=$file]) ++ if test "$MALLOC_H" != ""; then ++ AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>) ++ break + fi +-fi +-if test "$MALLOC_H" != ""; then +- AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>) +-fi ++done + + MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc" + AC_CHECK_FUNCS(strndup posix_memalign memalign valloc) + ++AC_CHECK_FUNCS(malloc_usable_size) ++ + dnl See if compiler supports some gcc-style attributes + + AC_CACHE_CHECK(for __attribute__((always_inline)), diff --git memory/build/Makefile.in memory/build/Makefile.in index dca0f48..af93ee0 100644 --- mozilla/memory/build/Makefile.in @@ -110,28 +180,67 @@ else SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,jemalloc,$(DEPTH)/memory/mozjemalloc) endif +diff --git memory/build/extraMallocFuncs.c memory/build/extraMallocFuncs.c +index 9d87629..76a2981 100644 +--- mozilla/memory/build/extraMallocFuncs.c ++++ mozilla/memory/build/extraMallocFuncs.c +@@ -94,7 +94,19 @@ wrap(wcsdup)(const wchar_t *src) + #endif + + #ifdef MOZ_JEMALLOC ++#if defined(MALLOC_H) && defined(MOZ_NATIVE_JEMALLOC) ++#include MALLOC_H ++#endif ++ ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) ++#define je_malloc_conf malloc_conf ++#define je_malloc_message malloc_message ++#endif ++ + /* Override some jemalloc defaults */ ++#if defined(MOZ_NATIVE_JEMALLOC) ++MOZ_EXTERNAL_VIS ++#endif + const char *je_malloc_conf = "narenas:1,lg_chunk:20"; + + #ifdef ANDROID diff --git memory/build/mozjemalloc_compat.c memory/build/mozjemalloc_compat.c -index 10a845a..57245f6 100644 +index 10a845a..798c299 100644 --- mozilla/memory/build/mozjemalloc_compat.c +++ mozilla/memory/build/mozjemalloc_compat.c -@@ -5,7 +5,15 @@ +@@ -5,7 +5,17 @@ #include "mozilla/Types.h" #include "jemalloc_types.h" -+#if defined(MALLOC_H) -+#include MALLOC_H /* for mallctl */ ++#if defined(MALLOC_H) && defined(MOZ_NATIVE_JEMALLOC) ++#include MALLOC_H +#endif + -+#if defined(MOZ_NATIVE_JEMALLOC) ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) +#define je_mallctl mallctl -+#else ++#endif ++ ++#if !defined(MOZ_NATIVE_JEMALLOC) extern int je_mallctl(const char*, void*, size_t*, void*, size_t); +#endif MOZ_EXPORT_API (void) jemalloc_stats(jemalloc_stats_t *stats) +diff --git memory/jemalloc/src/src/mutex.c memory/jemalloc/src/src/mutex.c +index 37a843e..55e18c2 100644 +--- mozilla/memory/jemalloc/src/src/mutex.c ++++ mozilla/memory/jemalloc/src/src/mutex.c +@@ -64,7 +64,7 @@ pthread_create(pthread_t *__restrict thread, + /******************************************************************************/ + + #ifdef JEMALLOC_MUTEX_INIT_CB +-int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, ++JEMALLOC_EXPORT int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, + void *(calloc_cb)(size_t, size_t)); + #endif + diff --git memory/mozalloc/mozalloc.cpp memory/mozalloc/mozalloc.cpp -index 5b61050b..16bba36 100644 +index 5b61050b..5b3399a 100644 --- mozilla/memory/mozalloc/mozalloc.cpp +++ mozilla/memory/mozalloc/mozalloc.cpp @@ -12,16 +12,13 @@ @@ -158,48 +267,59 @@ return malloc_size(ptr); -#elif defined(MOZ_MEMORY) || (defined(XP_LINUX) && !defined(ANDROID)) || defined(__FreeBSD__) - // Android bionic libc doesn't have malloc_usable_size. -+#elif defined(MOZ_MEMORY) || defined(HAVE_MALLOC_USABLE_SIZE) ++#elif defined(HAVE_MALLOC_USABLE_SIZE) || defined(MOZ_MEMORY) return malloc_usable_size(ptr); #elif defined(XP_WIN) return _msize(ptr); diff --git memory/mozjemalloc/jemalloc.h memory/mozjemalloc/jemalloc.h -index f0e0878..8f78123 100644 +index f0e0878..e74fb4d 100644 --- mozilla/memory/mozjemalloc/jemalloc.h +++ mozilla/memory/mozjemalloc/jemalloc.h -@@ -32,8 +32,8 @@ +@@ -32,23 +32,29 @@ #ifndef _JEMALLOC_H_ #define _JEMALLOC_H_ -#if defined(MOZ_MEMORY_DARWIN) -#include -+#if defined(MALLOC_H) -+#include MALLOC_H /* for malloc_good_size and nallocm */ ++#if defined(MALLOC_H) \ ++ && (defined(MOZ_NATIVE_JEMALLOC) || defined(MOZ_MEMORY_DARWIN)) ++#include MALLOC_H #endif #include "jemalloc_types.h" -@@ -51,7 +51,9 @@ void jemalloc_stats(jemalloc_stats_t *stats); - #if defined(MOZ_MEMORY_LINUX) ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) ++#define je_nallocm nallocm ++#endif ++ + #ifdef __cplusplus + extern "C" { + #endif + +-#if defined(MOZ_MEMORY_LINUX) ++#if defined(MOZ_NATIVE_JEMALLOC) \ ++ || defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD) __attribute__((weak)) #endif --#if defined(MOZ_JEMALLOC) -+#if defined(MOZ_NATIVE_JEMALLOC) -+#define je_nallocm nallocm -+#elif defined(MOZ_JEMALLOC) - int je_nallocm(size_t *rsize, size_t size, int flags); - #else - size_t je_malloc_good_size(size_t size); -diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in -index 7dbbbc6..0b06ad0 100644 ---- mozilla/toolkit/library/Makefile.in -+++ mozilla/toolkit/library/Makefile.in -@@ -346,6 +346,10 @@ EXTRA_DSO_LDOPTS += \ - $(SQLITE_LIBS) \ - $(NULL) + void jemalloc_stats(jemalloc_stats_t *stats); -+ifdef MOZ_NATIVE_JEMALLOC -+EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,memory,$(DIST)/lib) -+endif -+ - ifdef MOZ_NATIVE_JPEG - EXTRA_DSO_LDOPTS += $(MOZ_JPEG_LIBS) + /* Computes the usable size in advance. */ +-#if !defined(MOZ_MEMORY_DARWIN) +-#if defined(MOZ_MEMORY_LINUX) ++#if !defined(MOZ_NATIVE_JEMALLOC) && !defined(MOZ_MEMORY_DARWIN) ++#if defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD) + __attribute__((weak)) + #endif + #if defined(MOZ_JEMALLOC) +diff --git mozglue/build/Makefile.in mozglue/build/Makefile.in +index c333647..15ba505 100644 +--- mozilla/mozglue/build/Makefile.in ++++ mozilla/mozglue/build/Makefile.in +@@ -23,7 +23,7 @@ FORCE_STATIC_LIB = 1 endif + + # Keep jemalloc separated when mozglue is statically linked +-ifeq (1_1,$(MOZ_MEMORY)_$(FORCE_SHARED_LIB)) ++ifeq (1_1,$(MOZ_MEMORY)_$(or $(MOZ_NATIVE_JEMALLOC),$(FORCE_SHARED_LIB))) + SHARED_LIBRARY_LIBS = $(call EXPAND_LIBNAME_PATH,memory,$(DEPTH)/memory/build) + else + # Temporary, until bug 662814 lands Modified: trunk/www/firefox-nightly/files/patch-bug788955 ============================================================================== --- trunk/www/firefox-nightly/files/patch-bug788955 Sat Sep 22 09:45:05 2012 (r1024) +++ trunk/www/firefox-nightly/files/patch-bug788955 Sat Sep 22 09:45:15 2012 (r1025) @@ -1,21 +1,36 @@ diff --git Makefile.in Makefile.in -index e341462..26d19ad 100644 +index e341462..f75bd55 100644 --- Makefile.in +++ Makefile.in -@@ -47,7 +47,7 @@ endif - +@@ -48,8 +48,10 @@ endif ifdef MOZ_MEMORY tier_base_dirs += memory/mozjemalloc --ifdef MOZ_JEMALLOC -+ifeq (1_,$(MOZ_JEMALLOC)_$(MOZ_NATIVE_JEMALLOC)) + ifdef MOZ_JEMALLOC ++ifndef MOZ_NATIVE_JEMALLOC tier_base_dirs += memory/jemalloc endif ++endif tier_base_dirs += memory/build + endif + ifndef MOZ_NATIVE_ZLIB +diff --git allmakefiles.sh allmakefiles.sh +index 6a9be4b..544beff 100755 +--- allmakefiles.sh ++++ allmakefiles.sh +@@ -59,7 +59,7 @@ if [ ! "$LIBXUL_SDK" ]; then + mozglue/Makefile + mozglue/build/Makefile + " +- if [ "$MOZ_JEMALLOC" ]; then ++ if [ "$MOZ_JEMALLOC" -a ! "$MOZ_NATIVE_JEMALLOC" ]; then + add_makefiles " + memory/jemalloc/Makefile + " diff --git configure.in configure.in -index 4070d8c..3b39473 100644 +index cfcdbc0..ee9a299 100644 --- configure.in +++ configure.in -@@ -3670,21 +3670,22 @@ fi +@@ -3730,21 +3730,22 @@ fi dnl Check for the existence of various allocation headers/functions @@ -47,45 +62,100 @@ dnl See if compiler supports some gcc-style attributes AC_CACHE_CHECK(for __attribute__((always_inline)), -@@ -6902,7 +6903,21 @@ if test -z "$MOZ_MEMORY"; then - AC_MSG_WARN([When not building jemalloc, you need to set WIN32_REDIST_DIR to the path to the Visual C++ Redist (usually VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT, for VC++ v8) if you intend to distribute your build.]) - fi - ;; -+ *-freebsd*) -+ MOZ_JEMALLOC=1 -+ ;; - esac -+ +@@ -6960,6 +6961,18 @@ else + fi + + if test -z "$MOZ_MEMORY"; then + if test -n "$MOZ_JEMALLOC"; then -+ AC_CHECK_FUNCS(mallctl nallocm, -+ [MOZ_NATIVE_JEMALLOC=1 MOZ_MEMORY=1], -+ [MOZ_NATIVE_JEMALLOC= MOZ_MEMORY=]) ++ MOZ_NATIVE_JEMALLOC=1 ++ AC_CHECK_FUNCS(mallctl nallocm,, ++ [MOZ_NATIVE_JEMALLOC= ++ break]) ++ if test -n "$MOZ_NATIVE_JEMALLOC"; then ++ MOZ_MEMORY=1 ++ AC_DEFINE(MOZ_MEMORY) ++ AC_DEFINE(MOZ_JEMALLOC) ++ AC_DEFINE(MOZ_NATIVE_JEMALLOC) ++ fi + fi -+ if test -n "$MOZ_NATIVE_JEMALLOC"; then -+ AC_DEFINE(MOZ_NATIVE_JEMALLOC) -+ AC_DEFINE(MOZ_MEMORY) -+ AC_DEFINE(MOZ_JEMALLOC) -+ fi - else - dnl Don't try to run compiler tests on Windows - if test "$OS_ARCH" = "WINNT"; then -@@ -6988,6 +7003,7 @@ else - ;; - esac + case "${target}" in + *-mingw*) + if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then +@@ -7054,6 +7067,7 @@ else fi # MOZ_MEMORY -+AC_SUBST(MOZ_NATIVE_JEMALLOC) AC_SUBST(MOZ_MEMORY) AC_SUBST(MOZ_JEMALLOC) ++AC_SUBST(MOZ_NATIVE_JEMALLOC) AC_SUBST(MOZ_GLUE_LDFLAGS) -@@ -8754,7 +8770,7 @@ fi + AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS) + AC_SUBST(WIN32_CRT_LIBS) +@@ -8819,10 +8833,27 @@ fi # Run jemalloc configure script -if test "$MOZ_JEMALLOC" -a "$MOZ_MEMORY"; then +if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_JEMALLOC" -a "$MOZ_MEMORY" ; then ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_" - if test "$OS_ARCH" = "Linux"; then - MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" +- if test "$OS_ARCH" = "Linux"; then +- MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" ++ case "$OS_ARCH" in ++ Linux) ++ MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" ++ ;; ++ DragonFly|NetBSD|OpenBSD) ++ MANGLE="malloc calloc valloc free realloc posix_memalign" ++ ;; ++ FreeBSD) ++ # common ++ MANGLE="malloc calloc valloc free realloc posix_memalign malloc_usable_size" ++ # old jemalloc ++ MANGLE="$MANGLE reallocf _malloc_message _malloc_options" ++ # jemalloc 3.0.0 ++ MANGLE="$MANGLE aligned_alloc malloc_message malloc_conf" ++ MANGLE="$MANGLE malloc_stats_print mallctl mallctlnametomib mallctlbymib" ++ MANGLE="$MANGLE allocm rallocm sallocm dallocm nallocm" ++ ;; ++ esac ++ if test -n "$MANGLE"; then + MANGLED= + JEMALLOC_WRAPPER= + if test -n "$_WRAP_MALLOC"; then +diff --git js/src/configure.in js/src/configure.in +index 846482c..4022506 100644 +--- js/src/configure.in ++++ js/src/configure.in +@@ -3094,21 +3094,22 @@ fi + + dnl Check for the existence of various allocation headers/functions + ++MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h" + MALLOC_H= +-MOZ_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h]) +-if test "$MALLOC_H" = ""; then +- MOZ_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h]) +- if test "$MALLOC_H" = ""; then +- MOZ_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h]) ++ ++for file in $MALLOC_HEADERS; do ++ MOZ_CHECK_HEADER($file, [MALLOC_H=$file]) ++ if test "$MALLOC_H" != ""; then ++ AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>) ++ break + fi +-fi +-if test "$MALLOC_H" != ""; then +- AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>) +-fi ++done + + MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc" + AC_CHECK_FUNCS(strndup posix_memalign memalign valloc) + ++AC_CHECK_FUNCS(malloc_usable_size) ++ + dnl See if compiler supports some gcc-style attributes + + AC_CACHE_CHECK(for __attribute__((always_inline)), diff --git memory/build/Makefile.in memory/build/Makefile.in index dca0f48..af93ee0 100644 --- memory/build/Makefile.in @@ -100,28 +170,67 @@ else SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,jemalloc,$(DEPTH)/memory/mozjemalloc) endif +diff --git memory/build/extraMallocFuncs.c memory/build/extraMallocFuncs.c +index 9d87629..76a2981 100644 +--- memory/build/extraMallocFuncs.c ++++ memory/build/extraMallocFuncs.c +@@ -94,7 +94,19 @@ wrap(wcsdup)(const wchar_t *src) + #endif + + #ifdef MOZ_JEMALLOC ++#if defined(MALLOC_H) && defined(MOZ_NATIVE_JEMALLOC) ++#include MALLOC_H ++#endif ++ ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) ++#define je_malloc_conf malloc_conf ++#define je_malloc_message malloc_message ++#endif ++ + /* Override some jemalloc defaults */ ++#if defined(MOZ_NATIVE_JEMALLOC) ++MOZ_EXTERNAL_VIS ++#endif + const char *je_malloc_conf = "narenas:1,lg_chunk:20"; + + #ifdef ANDROID diff --git memory/build/mozjemalloc_compat.c memory/build/mozjemalloc_compat.c -index 10a845a..57245f6 100644 +index 10a845a..798c299 100644 --- memory/build/mozjemalloc_compat.c +++ memory/build/mozjemalloc_compat.c -@@ -5,7 +5,15 @@ +@@ -5,7 +5,17 @@ #include "mozilla/Types.h" #include "jemalloc_types.h" -+#if defined(MALLOC_H) -+#include MALLOC_H /* for mallctl */ ++#if defined(MALLOC_H) && defined(MOZ_NATIVE_JEMALLOC) ++#include MALLOC_H +#endif + -+#if defined(MOZ_NATIVE_JEMALLOC) ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) +#define je_mallctl mallctl -+#else ++#endif ++ ++#if !defined(MOZ_NATIVE_JEMALLOC) extern int je_mallctl(const char*, void*, size_t*, void*, size_t); +#endif MOZ_EXPORT_API (void) jemalloc_stats(jemalloc_stats_t *stats) +diff --git memory/jemalloc/src/src/mutex.c memory/jemalloc/src/src/mutex.c +index 37a843e..55e18c2 100644 +--- memory/jemalloc/src/src/mutex.c ++++ memory/jemalloc/src/src/mutex.c +@@ -64,7 +64,7 @@ pthread_create(pthread_t *__restrict thread, + /******************************************************************************/ + + #ifdef JEMALLOC_MUTEX_INIT_CB +-int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, ++JEMALLOC_EXPORT int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, + void *(calloc_cb)(size_t, size_t)); + #endif + diff --git memory/mozalloc/mozalloc.cpp memory/mozalloc/mozalloc.cpp -index 5b61050b..16bba36 100644 +index 5b61050b..5b3399a 100644 --- memory/mozalloc/mozalloc.cpp +++ memory/mozalloc/mozalloc.cpp @@ -12,16 +12,13 @@ @@ -148,48 +257,59 @@ return malloc_size(ptr); -#elif defined(MOZ_MEMORY) || (defined(XP_LINUX) && !defined(ANDROID)) || defined(__FreeBSD__) - // Android bionic libc doesn't have malloc_usable_size. -+#elif defined(MOZ_MEMORY) || defined(HAVE_MALLOC_USABLE_SIZE) ++#elif defined(HAVE_MALLOC_USABLE_SIZE) || defined(MOZ_MEMORY) return malloc_usable_size(ptr); #elif defined(XP_WIN) return _msize(ptr); diff --git memory/mozjemalloc/jemalloc.h memory/mozjemalloc/jemalloc.h -index f0e0878..8f78123 100644 +index f0e0878..e74fb4d 100644 --- memory/mozjemalloc/jemalloc.h +++ memory/mozjemalloc/jemalloc.h -@@ -32,8 +32,8 @@ +@@ -32,23 +32,29 @@ #ifndef _JEMALLOC_H_ #define _JEMALLOC_H_ -#if defined(MOZ_MEMORY_DARWIN) -#include -+#if defined(MALLOC_H) -+#include MALLOC_H /* for malloc_good_size and nallocm */ ++#if defined(MALLOC_H) \ ++ && (defined(MOZ_NATIVE_JEMALLOC) || defined(MOZ_MEMORY_DARWIN)) ++#include MALLOC_H #endif #include "jemalloc_types.h" -@@ -51,7 +51,9 @@ void jemalloc_stats(jemalloc_stats_t *stats); - #if defined(MOZ_MEMORY_LINUX) ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) ++#define je_nallocm nallocm ++#endif ++ + #ifdef __cplusplus + extern "C" { + #endif + +-#if defined(MOZ_MEMORY_LINUX) ++#if defined(MOZ_NATIVE_JEMALLOC) \ ++ || defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD) __attribute__((weak)) #endif --#if defined(MOZ_JEMALLOC) -+#if defined(MOZ_NATIVE_JEMALLOC) -+#define je_nallocm nallocm -+#elif defined(MOZ_JEMALLOC) - int je_nallocm(size_t *rsize, size_t size, int flags); - #else - size_t je_malloc_good_size(size_t size); -diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in -index 7dbbbc6..0b06ad0 100644 ---- toolkit/library/Makefile.in -+++ toolkit/library/Makefile.in -@@ -346,6 +346,10 @@ EXTRA_DSO_LDOPTS += \ - $(SQLITE_LIBS) \ - $(NULL) + void jemalloc_stats(jemalloc_stats_t *stats); -+ifdef MOZ_NATIVE_JEMALLOC -+EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,memory,$(DIST)/lib) -+endif -+ - ifdef MOZ_NATIVE_JPEG - EXTRA_DSO_LDOPTS += $(MOZ_JPEG_LIBS) + /* Computes the usable size in advance. */ +-#if !defined(MOZ_MEMORY_DARWIN) +-#if defined(MOZ_MEMORY_LINUX) ++#if !defined(MOZ_NATIVE_JEMALLOC) && !defined(MOZ_MEMORY_DARWIN) ++#if defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD) + __attribute__((weak)) + #endif + #if defined(MOZ_JEMALLOC) +diff --git mozglue/build/Makefile.in mozglue/build/Makefile.in +index c333647..15ba505 100644 +--- mozglue/build/Makefile.in ++++ mozglue/build/Makefile.in +@@ -23,7 +23,7 @@ FORCE_STATIC_LIB = 1 endif + + # Keep jemalloc separated when mozglue is statically linked +-ifeq (1_1,$(MOZ_MEMORY)_$(FORCE_SHARED_LIB)) ++ifeq (1_1,$(MOZ_MEMORY)_$(or $(MOZ_NATIVE_JEMALLOC),$(FORCE_SHARED_LIB))) + SHARED_LIBRARY_LIBS = $(call EXPAND_LIBNAME_PATH,memory,$(DEPTH)/memory/build) + else + # Temporary, until bug 662814 lands Modified: trunk/www/firefox/files/patch-bug788955 ============================================================================== --- trunk/www/firefox/files/patch-bug788955 Sat Sep 22 09:45:05 2012 (r1024) +++ trunk/www/firefox/files/patch-bug788955 Sat Sep 22 09:45:15 2012 (r1025) @@ -1,16 +1,31 @@ diff --git Makefile.in Makefile.in -index e341462..26d19ad 100644 +index e341462..f75bd55 100644 --- Makefile.in +++ Makefile.in -@@ -47,7 +47,7 @@ endif - +@@ -48,8 +48,10 @@ endif ifdef MOZ_MEMORY tier_base_dirs += memory/mozjemalloc --ifdef MOZ_JEMALLOC -+ifeq (1_,$(MOZ_JEMALLOC)_$(MOZ_NATIVE_JEMALLOC)) + ifdef MOZ_JEMALLOC ++ifndef MOZ_NATIVE_JEMALLOC tier_base_dirs += memory/jemalloc endif ++endif tier_base_dirs += memory/build + endif + ifndef MOZ_NATIVE_ZLIB +diff --git allmakefiles.sh allmakefiles.sh +index 6a9be4b..544beff 100755 +--- allmakefiles.sh ++++ allmakefiles.sh +@@ -59,7 +59,7 @@ if [ ! "$LIBXUL_SDK" ]; then + mozglue/Makefile + mozglue/build/Makefile + " +- if [ "$MOZ_JEMALLOC" ]; then ++ if [ "$MOZ_JEMALLOC" -a ! "$MOZ_NATIVE_JEMALLOC" ]; then + add_makefiles " + memory/jemalloc/Makefile + " --- config/autoconf.mk.in +++ config/autoconf.mk.in @@ -74,6 +74,7 @@ MOZ_JSDEBUGGER = @MOZ_JSDEBUGGER@ @@ -22,10 +37,10 @@ MOZ_ENABLE_PROFILER_SPS = @MOZ_ENABLE_PROFILER_SPS@ MOZ_JPROF = @MOZ_JPROF@ diff --git configure.in configure.in -index 4070d8c..3b39473 100644 +index cfcdbc0..ee9a299 100644 --- configure.in +++ configure.in -@@ -3670,21 +3670,22 @@ fi +@@ -3730,21 +3730,22 @@ fi dnl Check for the existence of various allocation headers/functions @@ -57,45 +72,100 @@ dnl See if compiler supports some gcc-style attributes AC_CACHE_CHECK(for __attribute__((always_inline)), -@@ -6902,7 +6903,21 @@ if test -z "$MOZ_MEMORY"; then - AC_MSG_WARN([When not building jemalloc, you need to set WIN32_REDIST_DIR to the path to the Visual C++ Redist (usually VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT, for VC++ v8) if you intend to distribute your build.]) - fi - ;; -+ *-freebsd*) -+ MOZ_JEMALLOC=1 -+ ;; - esac -+ +@@ -6960,6 +6961,18 @@ else + fi + + if test -z "$MOZ_MEMORY"; then + if test -n "$MOZ_JEMALLOC"; then -+ AC_CHECK_FUNCS(mallctl nallocm, -+ [MOZ_NATIVE_JEMALLOC=1 MOZ_MEMORY=1], -+ [MOZ_NATIVE_JEMALLOC= MOZ_MEMORY=]) ++ MOZ_NATIVE_JEMALLOC=1 ++ AC_CHECK_FUNCS(mallctl nallocm,, ++ [MOZ_NATIVE_JEMALLOC= ++ break]) ++ if test -n "$MOZ_NATIVE_JEMALLOC"; then ++ MOZ_MEMORY=1 ++ AC_DEFINE(MOZ_MEMORY) ++ AC_DEFINE(MOZ_JEMALLOC) ++ AC_DEFINE(MOZ_NATIVE_JEMALLOC) ++ fi + fi -+ if test -n "$MOZ_NATIVE_JEMALLOC"; then -+ AC_DEFINE(MOZ_NATIVE_JEMALLOC) -+ AC_DEFINE(MOZ_MEMORY) -+ AC_DEFINE(MOZ_JEMALLOC) -+ fi - else - dnl Don't try to run compiler tests on Windows - if test "$OS_ARCH" = "WINNT"; then -@@ -6988,6 +7003,7 @@ else - ;; - esac + case "${target}" in + *-mingw*) + if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then +@@ -7054,6 +7067,7 @@ else fi # MOZ_MEMORY -+AC_SUBST(MOZ_NATIVE_JEMALLOC) AC_SUBST(MOZ_MEMORY) AC_SUBST(MOZ_JEMALLOC) ++AC_SUBST(MOZ_NATIVE_JEMALLOC) AC_SUBST(MOZ_GLUE_LDFLAGS) -@@ -8754,7 +8770,7 @@ fi + AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS) + AC_SUBST(WIN32_CRT_LIBS) +@@ -8819,10 +8833,27 @@ fi # Run jemalloc configure script -if test "$MOZ_JEMALLOC" -a "$MOZ_MEMORY"; then +if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_JEMALLOC" -a "$MOZ_MEMORY" ; then ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_" - if test "$OS_ARCH" = "Linux"; then - MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" +- if test "$OS_ARCH" = "Linux"; then +- MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" ++ case "$OS_ARCH" in ++ Linux) ++ MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" ++ ;; ++ DragonFly|NetBSD|OpenBSD) ++ MANGLE="malloc calloc valloc free realloc posix_memalign" ++ ;; ++ FreeBSD) ++ # common ++ MANGLE="malloc calloc valloc free realloc posix_memalign malloc_usable_size" ++ # old jemalloc ++ MANGLE="$MANGLE reallocf _malloc_message _malloc_options" ++ # jemalloc 3.0.0 ++ MANGLE="$MANGLE aligned_alloc malloc_message malloc_conf" ++ MANGLE="$MANGLE malloc_stats_print mallctl mallctlnametomib mallctlbymib" ++ MANGLE="$MANGLE allocm rallocm sallocm dallocm nallocm" ++ ;; ++ esac ++ if test -n "$MANGLE"; then + MANGLED= + JEMALLOC_WRAPPER= + if test -n "$_WRAP_MALLOC"; then +diff --git js/src/configure.in js/src/configure.in +index 846482c..4022506 100644 +--- js/src/configure.in ++++ js/src/configure.in +@@ -3094,21 +3094,22 @@ fi + + dnl Check for the existence of various allocation headers/functions + ++MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h" + MALLOC_H= +-MOZ_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h]) +-if test "$MALLOC_H" = ""; then +- MOZ_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h]) +- if test "$MALLOC_H" = ""; then +- MOZ_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h]) ++ ++for file in $MALLOC_HEADERS; do ++ MOZ_CHECK_HEADER($file, [MALLOC_H=$file]) ++ if test "$MALLOC_H" != ""; then ++ AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>) ++ break + fi +-fi +-if test "$MALLOC_H" != ""; then +- AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>) +-fi ++done + + MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc" + AC_CHECK_FUNCS(strndup posix_memalign memalign valloc) + ++AC_CHECK_FUNCS(malloc_usable_size) ++ + dnl See if compiler supports some gcc-style attributes + + AC_CACHE_CHECK(for __attribute__((always_inline)), diff --git memory/build/Makefile.in memory/build/Makefile.in index dca0f48..af93ee0 100644 --- memory/build/Makefile.in @@ -110,28 +180,67 @@ else SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,jemalloc,$(DEPTH)/memory/mozjemalloc) endif +diff --git memory/build/extraMallocFuncs.c memory/build/extraMallocFuncs.c +index 9d87629..76a2981 100644 +--- memory/build/extraMallocFuncs.c ++++ memory/build/extraMallocFuncs.c +@@ -94,7 +94,19 @@ wrap(wcsdup)(const wchar_t *src) + #endif + + #ifdef MOZ_JEMALLOC ++#if defined(MALLOC_H) && defined(MOZ_NATIVE_JEMALLOC) ++#include MALLOC_H ++#endif ++ ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) ++#define je_malloc_conf malloc_conf ++#define je_malloc_message malloc_message ++#endif ++ + /* Override some jemalloc defaults */ ++#if defined(MOZ_NATIVE_JEMALLOC) ++MOZ_EXTERNAL_VIS ++#endif + const char *je_malloc_conf = "narenas:1,lg_chunk:20"; + + #ifdef ANDROID diff --git memory/build/mozjemalloc_compat.c memory/build/mozjemalloc_compat.c -index 10a845a..57245f6 100644 +index 10a845a..798c299 100644 --- memory/build/mozjemalloc_compat.c +++ memory/build/mozjemalloc_compat.c -@@ -5,7 +5,15 @@ +@@ -5,7 +5,17 @@ #include "mozilla/Types.h" #include "jemalloc_types.h" -+#if defined(MALLOC_H) -+#include MALLOC_H /* for mallctl */ ++#if defined(MALLOC_H) && defined(MOZ_NATIVE_JEMALLOC) ++#include MALLOC_H +#endif + -+#if defined(MOZ_NATIVE_JEMALLOC) ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) +#define je_mallctl mallctl -+#else ++#endif ++ ++#if !defined(MOZ_NATIVE_JEMALLOC) extern int je_mallctl(const char*, void*, size_t*, void*, size_t); +#endif MOZ_EXPORT_API (void) jemalloc_stats(jemalloc_stats_t *stats) +diff --git memory/jemalloc/src/src/mutex.c memory/jemalloc/src/src/mutex.c +index 37a843e..55e18c2 100644 +--- memory/jemalloc/src/src/mutex.c ++++ memory/jemalloc/src/src/mutex.c +@@ -64,7 +64,7 @@ pthread_create(pthread_t *__restrict thread, + /******************************************************************************/ + + #ifdef JEMALLOC_MUTEX_INIT_CB +-int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, ++JEMALLOC_EXPORT int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, + void *(calloc_cb)(size_t, size_t)); + #endif + diff --git memory/mozalloc/mozalloc.cpp memory/mozalloc/mozalloc.cpp -index 5b61050b..16bba36 100644 +index 5b61050b..5b3399a 100644 --- memory/mozalloc/mozalloc.cpp +++ memory/mozalloc/mozalloc.cpp @@ -12,16 +12,13 @@ @@ -158,48 +267,59 @@ return malloc_size(ptr); -#elif defined(MOZ_MEMORY) || (defined(XP_LINUX) && !defined(ANDROID)) || defined(__FreeBSD__) - // Android bionic libc doesn't have malloc_usable_size. -+#elif defined(MOZ_MEMORY) || defined(HAVE_MALLOC_USABLE_SIZE) ++#elif defined(HAVE_MALLOC_USABLE_SIZE) || defined(MOZ_MEMORY) return malloc_usable_size(ptr); #elif defined(XP_WIN) return _msize(ptr); diff --git memory/mozjemalloc/jemalloc.h memory/mozjemalloc/jemalloc.h -index f0e0878..8f78123 100644 +index f0e0878..e74fb4d 100644 --- memory/mozjemalloc/jemalloc.h +++ memory/mozjemalloc/jemalloc.h -@@ -32,8 +32,8 @@ +@@ -32,23 +32,29 @@ #ifndef _JEMALLOC_H_ #define _JEMALLOC_H_ -#if defined(MOZ_MEMORY_DARWIN) -#include -+#if defined(MALLOC_H) -+#include MALLOC_H /* for malloc_good_size and nallocm */ ++#if defined(MALLOC_H) \ ++ && (defined(MOZ_NATIVE_JEMALLOC) || defined(MOZ_MEMORY_DARWIN)) ++#include MALLOC_H #endif #include "jemalloc_types.h" -@@ -51,7 +51,9 @@ void jemalloc_stats(jemalloc_stats_t *stats); - #if defined(MOZ_MEMORY_LINUX) ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) ++#define je_nallocm nallocm ++#endif ++ + #ifdef __cplusplus + extern "C" { + #endif + +-#if defined(MOZ_MEMORY_LINUX) ++#if defined(MOZ_NATIVE_JEMALLOC) \ ++ || defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD) __attribute__((weak)) #endif --#if defined(MOZ_JEMALLOC) -+#if defined(MOZ_NATIVE_JEMALLOC) -+#define je_nallocm nallocm -+#elif defined(MOZ_JEMALLOC) - int je_nallocm(size_t *rsize, size_t size, int flags); - #else - size_t je_malloc_good_size(size_t size); -diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in -index 7dbbbc6..0b06ad0 100644 ---- toolkit/library/Makefile.in -+++ toolkit/library/Makefile.in -@@ -346,6 +346,10 @@ EXTRA_DSO_LDOPTS += \ - $(SQLITE_LIBS) \ - $(NULL) + void jemalloc_stats(jemalloc_stats_t *stats); -+ifdef MOZ_NATIVE_JEMALLOC -+EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,memory,$(DIST)/lib) -+endif -+ - ifdef MOZ_NATIVE_JPEG - EXTRA_DSO_LDOPTS += $(MOZ_JPEG_LIBS) + /* Computes the usable size in advance. */ +-#if !defined(MOZ_MEMORY_DARWIN) +-#if defined(MOZ_MEMORY_LINUX) ++#if !defined(MOZ_NATIVE_JEMALLOC) && !defined(MOZ_MEMORY_DARWIN) ++#if defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD) + __attribute__((weak)) + #endif + #if defined(MOZ_JEMALLOC) +diff --git mozglue/build/Makefile.in mozglue/build/Makefile.in +index c333647..15ba505 100644 +--- mozglue/build/Makefile.in ++++ mozglue/build/Makefile.in +@@ -23,7 +23,7 @@ FORCE_STATIC_LIB = 1 endif + + # Keep jemalloc separated when mozglue is statically linked +-ifeq (1_1,$(MOZ_MEMORY)_$(FORCE_SHARED_LIB)) ++ifeq (1_1,$(MOZ_MEMORY)_$(or $(MOZ_NATIVE_JEMALLOC),$(FORCE_SHARED_LIB))) + SHARED_LIBRARY_LIBS = $(call EXPAND_LIBNAME_PATH,memory,$(DEPTH)/memory/build) + else + # Temporary, until bug 662814 lands Modified: trunk/www/libxul/files/patch-bug788955 ============================================================================== --- trunk/www/libxul/files/patch-bug788955 Sat Sep 22 09:45:05 2012 (r1024) +++ trunk/www/libxul/files/patch-bug788955 Sat Sep 22 09:45:15 2012 (r1025) @@ -1,16 +1,31 @@ diff --git Makefile.in Makefile.in -index e341462..26d19ad 100644 +index e341462..f75bd55 100644 --- Makefile.in +++ Makefile.in -@@ -47,7 +47,7 @@ endif - +@@ -48,8 +48,10 @@ endif ifdef MOZ_MEMORY tier_base_dirs += memory/mozjemalloc --ifdef MOZ_JEMALLOC -+ifeq (1_,$(MOZ_JEMALLOC)_$(MOZ_NATIVE_JEMALLOC)) + ifdef MOZ_JEMALLOC ++ifndef MOZ_NATIVE_JEMALLOC tier_base_dirs += memory/jemalloc endif ++endif tier_base_dirs += memory/build + endif + ifndef MOZ_NATIVE_ZLIB +diff --git allmakefiles.sh allmakefiles.sh +index 6a9be4b..544beff 100755 +--- allmakefiles.sh ++++ allmakefiles.sh +@@ -59,7 +59,7 @@ if [ ! "$LIBXUL_SDK" ]; then + mozglue/Makefile + mozglue/build/Makefile + " +- if [ "$MOZ_JEMALLOC" ]; then ++ if [ "$MOZ_JEMALLOC" -a ! "$MOZ_NATIVE_JEMALLOC" ]; then + add_makefiles " + memory/jemalloc/Makefile + " --- config/autoconf.mk.in +++ config/autoconf.mk.in @@ -74,6 +74,7 @@ MOZ_JSDEBUGGER = @MOZ_JSDEBUGGER@ @@ -22,10 +37,10 @@ MOZ_ENABLE_PROFILER_SPS = @MOZ_ENABLE_PROFILER_SPS@ MOZ_JPROF = @MOZ_JPROF@ diff --git configure.in configure.in -index 4070d8c..3b39473 100644 +index cfcdbc0..ee9a299 100644 --- configure.in +++ configure.in -@@ -3670,21 +3670,22 @@ fi +@@ -3730,21 +3730,22 @@ fi dnl Check for the existence of various allocation headers/functions @@ -57,45 +72,100 @@ dnl See if compiler supports some gcc-style attributes AC_CACHE_CHECK(for __attribute__((always_inline)), -@@ -6902,7 +6903,21 @@ if test -z "$MOZ_MEMORY"; then - AC_MSG_WARN([When not building jemalloc, you need to set WIN32_REDIST_DIR to the path to the Visual C++ Redist (usually VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT, for VC++ v8) if you intend to distribute your build.]) - fi - ;; -+ *-freebsd*) -+ MOZ_JEMALLOC=1 -+ ;; - esac -+ +@@ -6960,6 +6961,18 @@ else + fi + + if test -z "$MOZ_MEMORY"; then + if test -n "$MOZ_JEMALLOC"; then -+ AC_CHECK_FUNCS(mallctl nallocm, -+ [MOZ_NATIVE_JEMALLOC=1 MOZ_MEMORY=1], -+ [MOZ_NATIVE_JEMALLOC= MOZ_MEMORY=]) ++ MOZ_NATIVE_JEMALLOC=1 ++ AC_CHECK_FUNCS(mallctl nallocm,, ++ [MOZ_NATIVE_JEMALLOC= ++ break]) ++ if test -n "$MOZ_NATIVE_JEMALLOC"; then ++ MOZ_MEMORY=1 ++ AC_DEFINE(MOZ_MEMORY) ++ AC_DEFINE(MOZ_JEMALLOC) ++ AC_DEFINE(MOZ_NATIVE_JEMALLOC) ++ fi + fi -+ if test -n "$MOZ_NATIVE_JEMALLOC"; then -+ AC_DEFINE(MOZ_NATIVE_JEMALLOC) -+ AC_DEFINE(MOZ_MEMORY) -+ AC_DEFINE(MOZ_JEMALLOC) -+ fi - else - dnl Don't try to run compiler tests on Windows - if test "$OS_ARCH" = "WINNT"; then -@@ -6988,6 +7003,7 @@ else - ;; - esac + case "${target}" in + *-mingw*) + if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then +@@ -7054,6 +7067,7 @@ else fi # MOZ_MEMORY -+AC_SUBST(MOZ_NATIVE_JEMALLOC) AC_SUBST(MOZ_MEMORY) AC_SUBST(MOZ_JEMALLOC) ++AC_SUBST(MOZ_NATIVE_JEMALLOC) AC_SUBST(MOZ_GLUE_LDFLAGS) -@@ -8754,7 +8770,7 @@ fi + AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS) + AC_SUBST(WIN32_CRT_LIBS) +@@ -8819,10 +8833,27 @@ fi # Run jemalloc configure script -if test "$MOZ_JEMALLOC" -a "$MOZ_MEMORY"; then +if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_JEMALLOC" -a "$MOZ_MEMORY" ; then ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_" - if test "$OS_ARCH" = "Linux"; then - MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" +- if test "$OS_ARCH" = "Linux"; then +- MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" ++ case "$OS_ARCH" in ++ Linux) ++ MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" ++ ;; ++ DragonFly|NetBSD|OpenBSD) ++ MANGLE="malloc calloc valloc free realloc posix_memalign" ++ ;; ++ FreeBSD) ++ # common ++ MANGLE="malloc calloc valloc free realloc posix_memalign malloc_usable_size" ++ # old jemalloc ++ MANGLE="$MANGLE reallocf _malloc_message _malloc_options" ++ # jemalloc 3.0.0 ++ MANGLE="$MANGLE aligned_alloc malloc_message malloc_conf" ++ MANGLE="$MANGLE malloc_stats_print mallctl mallctlnametomib mallctlbymib" ++ MANGLE="$MANGLE allocm rallocm sallocm dallocm nallocm" ++ ;; ++ esac ++ if test -n "$MANGLE"; then + MANGLED= + JEMALLOC_WRAPPER= + if test -n "$_WRAP_MALLOC"; then +diff --git js/src/configure.in js/src/configure.in +index 846482c..4022506 100644 +--- js/src/configure.in ++++ js/src/configure.in +@@ -3094,21 +3094,22 @@ fi + + dnl Check for the existence of various allocation headers/functions + ++MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h" + MALLOC_H= +-MOZ_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h]) +-if test "$MALLOC_H" = ""; then +- MOZ_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h]) +- if test "$MALLOC_H" = ""; then +- MOZ_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h]) ++ ++for file in $MALLOC_HEADERS; do ++ MOZ_CHECK_HEADER($file, [MALLOC_H=$file]) ++ if test "$MALLOC_H" != ""; then ++ AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>) ++ break + fi +-fi +-if test "$MALLOC_H" != ""; then +- AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>) +-fi ++done + + MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc" + AC_CHECK_FUNCS(strndup posix_memalign memalign valloc) + ++AC_CHECK_FUNCS(malloc_usable_size) ++ + dnl See if compiler supports some gcc-style attributes + + AC_CACHE_CHECK(for __attribute__((always_inline)), diff --git memory/build/Makefile.in memory/build/Makefile.in index dca0f48..af93ee0 100644 --- memory/build/Makefile.in @@ -110,28 +180,67 @@ else SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,jemalloc,$(DEPTH)/memory/mozjemalloc) endif +diff --git memory/build/extraMallocFuncs.c memory/build/extraMallocFuncs.c +index 9d87629..76a2981 100644 +--- memory/build/extraMallocFuncs.c ++++ memory/build/extraMallocFuncs.c +@@ -94,7 +94,19 @@ wrap(wcsdup)(const wchar_t *src) + #endif + + #ifdef MOZ_JEMALLOC ++#if defined(MALLOC_H) && defined(MOZ_NATIVE_JEMALLOC) ++#include MALLOC_H ++#endif ++ ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) ++#define je_malloc_conf malloc_conf ++#define je_malloc_message malloc_message ++#endif ++ + /* Override some jemalloc defaults */ ++#if defined(MOZ_NATIVE_JEMALLOC) ++MOZ_EXTERNAL_VIS ++#endif + const char *je_malloc_conf = "narenas:1,lg_chunk:20"; + + #ifdef ANDROID diff --git memory/build/mozjemalloc_compat.c memory/build/mozjemalloc_compat.c -index 10a845a..57245f6 100644 +index 10a845a..798c299 100644 --- memory/build/mozjemalloc_compat.c +++ memory/build/mozjemalloc_compat.c -@@ -5,7 +5,15 @@ +@@ -5,7 +5,17 @@ #include "mozilla/Types.h" #include "jemalloc_types.h" -+#if defined(MALLOC_H) -+#include MALLOC_H /* for mallctl */ ++#if defined(MALLOC_H) && defined(MOZ_NATIVE_JEMALLOC) ++#include MALLOC_H +#endif + -+#if defined(MOZ_NATIVE_JEMALLOC) ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) +#define je_mallctl mallctl -+#else ++#endif ++ ++#if !defined(MOZ_NATIVE_JEMALLOC) extern int je_mallctl(const char*, void*, size_t*, void*, size_t); +#endif MOZ_EXPORT_API (void) jemalloc_stats(jemalloc_stats_t *stats) +diff --git memory/jemalloc/src/src/mutex.c memory/jemalloc/src/src/mutex.c +index 37a843e..55e18c2 100644 +--- memory/jemalloc/src/src/mutex.c ++++ memory/jemalloc/src/src/mutex.c +@@ -64,7 +64,7 @@ pthread_create(pthread_t *__restrict thread, + /******************************************************************************/ + + #ifdef JEMALLOC_MUTEX_INIT_CB +-int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, ++JEMALLOC_EXPORT int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, + void *(calloc_cb)(size_t, size_t)); + #endif + diff --git memory/mozalloc/mozalloc.cpp memory/mozalloc/mozalloc.cpp -index 5b61050b..16bba36 100644 +index 5b61050b..5b3399a 100644 --- memory/mozalloc/mozalloc.cpp +++ memory/mozalloc/mozalloc.cpp @@ -12,16 +12,13 @@ @@ -158,48 +267,59 @@ return malloc_size(ptr); -#elif defined(MOZ_MEMORY) || (defined(XP_LINUX) && !defined(ANDROID)) || defined(__FreeBSD__) - // Android bionic libc doesn't have malloc_usable_size. -+#elif defined(MOZ_MEMORY) || defined(HAVE_MALLOC_USABLE_SIZE) ++#elif defined(HAVE_MALLOC_USABLE_SIZE) || defined(MOZ_MEMORY) return malloc_usable_size(ptr); #elif defined(XP_WIN) return _msize(ptr); diff --git memory/mozjemalloc/jemalloc.h memory/mozjemalloc/jemalloc.h -index f0e0878..8f78123 100644 +index f0e0878..e74fb4d 100644 --- memory/mozjemalloc/jemalloc.h +++ memory/mozjemalloc/jemalloc.h -@@ -32,8 +32,8 @@ +@@ -32,23 +32,29 @@ #ifndef _JEMALLOC_H_ #define _JEMALLOC_H_ -#if defined(MOZ_MEMORY_DARWIN) -#include -+#if defined(MALLOC_H) -+#include MALLOC_H /* for malloc_good_size and nallocm */ ++#if defined(MALLOC_H) \ ++ && (defined(MOZ_NATIVE_JEMALLOC) || defined(MOZ_MEMORY_DARWIN)) ++#include MALLOC_H #endif #include "jemalloc_types.h" -@@ -51,7 +51,9 @@ void jemalloc_stats(jemalloc_stats_t *stats); - #if defined(MOZ_MEMORY_LINUX) ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) ++#define je_nallocm nallocm ++#endif ++ + #ifdef __cplusplus + extern "C" { + #endif + +-#if defined(MOZ_MEMORY_LINUX) ++#if defined(MOZ_NATIVE_JEMALLOC) \ ++ || defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD) __attribute__((weak)) #endif --#if defined(MOZ_JEMALLOC) -+#if defined(MOZ_NATIVE_JEMALLOC) -+#define je_nallocm nallocm -+#elif defined(MOZ_JEMALLOC) - int je_nallocm(size_t *rsize, size_t size, int flags); - #else - size_t je_malloc_good_size(size_t size); -diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in -index 7dbbbc6..0b06ad0 100644 ---- toolkit/library/Makefile.in -+++ toolkit/library/Makefile.in -@@ -346,6 +346,10 @@ EXTRA_DSO_LDOPTS += \ - $(SQLITE_LIBS) \ - $(NULL) + void jemalloc_stats(jemalloc_stats_t *stats); -+ifdef MOZ_NATIVE_JEMALLOC -+EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,memory,$(DIST)/lib) -+endif -+ - ifdef MOZ_NATIVE_JPEG - EXTRA_DSO_LDOPTS += $(MOZ_JPEG_LIBS) + /* Computes the usable size in advance. */ +-#if !defined(MOZ_MEMORY_DARWIN) +-#if defined(MOZ_MEMORY_LINUX) ++#if !defined(MOZ_NATIVE_JEMALLOC) && !defined(MOZ_MEMORY_DARWIN) ++#if defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD) + __attribute__((weak)) + #endif + #if defined(MOZ_JEMALLOC) +diff --git mozglue/build/Makefile.in mozglue/build/Makefile.in +index c333647..15ba505 100644 +--- mozglue/build/Makefile.in ++++ mozglue/build/Makefile.in +@@ -23,7 +23,7 @@ FORCE_STATIC_LIB = 1 endif + + # Keep jemalloc separated when mozglue is statically linked +-ifeq (1_1,$(MOZ_MEMORY)_$(FORCE_SHARED_LIB)) ++ifeq (1_1,$(MOZ_MEMORY)_$(or $(MOZ_NATIVE_JEMALLOC),$(FORCE_SHARED_LIB))) + SHARED_LIBRARY_LIBS = $(call EXPAND_LIBNAME_PATH,memory,$(DEPTH)/memory/build) + else + # Temporary, until bug 662814 lands Modified: trunk/www/seamonkey/files/patch-bug788955 ============================================================================== --- trunk/www/seamonkey/files/patch-bug788955 Sat Sep 22 09:45:05 2012 (r1024) +++ trunk/www/seamonkey/files/patch-bug788955 Sat Sep 22 09:45:15 2012 (r1025) @@ -1,16 +1,31 @@ diff --git Makefile.in Makefile.in -index e341462..26d19ad 100644 +index e341462..f75bd55 100644 --- mozilla/Makefile.in +++ mozilla/Makefile.in -@@ -47,7 +47,7 @@ endif - +@@ -48,8 +48,10 @@ endif ifdef MOZ_MEMORY tier_base_dirs += memory/mozjemalloc --ifdef MOZ_JEMALLOC -+ifeq (1_,$(MOZ_JEMALLOC)_$(MOZ_NATIVE_JEMALLOC)) + ifdef MOZ_JEMALLOC ++ifndef MOZ_NATIVE_JEMALLOC tier_base_dirs += memory/jemalloc endif ++endif tier_base_dirs += memory/build + endif + ifndef MOZ_NATIVE_ZLIB +diff --git allmakefiles.sh allmakefiles.sh +index 6a9be4b..544beff 100755 +--- mozilla/allmakefiles.sh ++++ mozilla/allmakefiles.sh +@@ -59,7 +59,7 @@ if [ ! "$LIBXUL_SDK" ]; then + mozglue/Makefile + mozglue/build/Makefile + " +- if [ "$MOZ_JEMALLOC" ]; then ++ if [ "$MOZ_JEMALLOC" -a ! "$MOZ_NATIVE_JEMALLOC" ]; then + add_makefiles " + memory/jemalloc/Makefile + " --- mozilla/config/autoconf.mk.in +++ mozilla/config/autoconf.mk.in @@ -74,6 +74,7 @@ MOZ_JSDEBUGGER = @MOZ_JSDEBUGGER@ @@ -22,10 +37,10 @@ MOZ_ENABLE_PROFILER_SPS = @MOZ_ENABLE_PROFILER_SPS@ MOZ_JPROF = @MOZ_JPROF@ diff --git configure.in configure.in -index 4070d8c..3b39473 100644 +index cfcdbc0..ee9a299 100644 --- mozilla/configure.in +++ mozilla/configure.in -@@ -3670,21 +3670,22 @@ fi +@@ -3730,21 +3730,22 @@ fi dnl Check for the existence of various allocation headers/functions @@ -57,45 +72,100 @@ dnl See if compiler supports some gcc-style attributes AC_CACHE_CHECK(for __attribute__((always_inline)), -@@ -6902,7 +6903,21 @@ if test -z "$MOZ_MEMORY"; then - AC_MSG_WARN([When not building jemalloc, you need to set WIN32_REDIST_DIR to the path to the Visual C++ Redist (usually VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT, for VC++ v8) if you intend to distribute your build.]) - fi - ;; -+ *-freebsd*) -+ MOZ_JEMALLOC=1 -+ ;; - esac -+ +@@ -6960,6 +6961,18 @@ else + fi + + if test -z "$MOZ_MEMORY"; then + if test -n "$MOZ_JEMALLOC"; then -+ AC_CHECK_FUNCS(mallctl nallocm, -+ [MOZ_NATIVE_JEMALLOC=1 MOZ_MEMORY=1], -+ [MOZ_NATIVE_JEMALLOC= MOZ_MEMORY=]) ++ MOZ_NATIVE_JEMALLOC=1 ++ AC_CHECK_FUNCS(mallctl nallocm,, ++ [MOZ_NATIVE_JEMALLOC= ++ break]) ++ if test -n "$MOZ_NATIVE_JEMALLOC"; then ++ MOZ_MEMORY=1 ++ AC_DEFINE(MOZ_MEMORY) ++ AC_DEFINE(MOZ_JEMALLOC) ++ AC_DEFINE(MOZ_NATIVE_JEMALLOC) ++ fi + fi -+ if test -n "$MOZ_NATIVE_JEMALLOC"; then -+ AC_DEFINE(MOZ_NATIVE_JEMALLOC) -+ AC_DEFINE(MOZ_MEMORY) -+ AC_DEFINE(MOZ_JEMALLOC) -+ fi - else - dnl Don't try to run compiler tests on Windows - if test "$OS_ARCH" = "WINNT"; then -@@ -6988,6 +7003,7 @@ else - ;; - esac + case "${target}" in + *-mingw*) + if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then +@@ -7054,6 +7067,7 @@ else fi # MOZ_MEMORY -+AC_SUBST(MOZ_NATIVE_JEMALLOC) AC_SUBST(MOZ_MEMORY) AC_SUBST(MOZ_JEMALLOC) ++AC_SUBST(MOZ_NATIVE_JEMALLOC) AC_SUBST(MOZ_GLUE_LDFLAGS) -@@ -8754,7 +8770,7 @@ fi + AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS) + AC_SUBST(WIN32_CRT_LIBS) +@@ -8819,10 +8833,27 @@ fi # Run jemalloc configure script -if test "$MOZ_JEMALLOC" -a "$MOZ_MEMORY"; then +if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_JEMALLOC" -a "$MOZ_MEMORY" ; then ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_" - if test "$OS_ARCH" = "Linux"; then - MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" +- if test "$OS_ARCH" = "Linux"; then +- MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" ++ case "$OS_ARCH" in ++ Linux) ++ MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size" ++ ;; ++ DragonFly|NetBSD|OpenBSD) ++ MANGLE="malloc calloc valloc free realloc posix_memalign" ++ ;; ++ FreeBSD) ++ # common ++ MANGLE="malloc calloc valloc free realloc posix_memalign malloc_usable_size" ++ # old jemalloc ++ MANGLE="$MANGLE reallocf _malloc_message _malloc_options" ++ # jemalloc 3.0.0 ++ MANGLE="$MANGLE aligned_alloc malloc_message malloc_conf" ++ MANGLE="$MANGLE malloc_stats_print mallctl mallctlnametomib mallctlbymib" ++ MANGLE="$MANGLE allocm rallocm sallocm dallocm nallocm" ++ ;; ++ esac ++ if test -n "$MANGLE"; then + MANGLED= + JEMALLOC_WRAPPER= + if test -n "$_WRAP_MALLOC"; then +diff --git js/src/configure.in js/src/configure.in +index 846482c..4022506 100644 +--- mozilla/js/src/configure.in ++++ mozilla/js/src/configure.in +@@ -3094,21 +3094,22 @@ fi + + dnl Check for the existence of various allocation headers/functions + ++MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h" + MALLOC_H= +-MOZ_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h]) +-if test "$MALLOC_H" = ""; then +- MOZ_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h]) +- if test "$MALLOC_H" = ""; then +- MOZ_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h]) ++ ++for file in $MALLOC_HEADERS; do ++ MOZ_CHECK_HEADER($file, [MALLOC_H=$file]) ++ if test "$MALLOC_H" != ""; then ++ AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>) ++ break + fi +-fi +-if test "$MALLOC_H" != ""; then +- AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>) +-fi ++done + + MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc" + AC_CHECK_FUNCS(strndup posix_memalign memalign valloc) + ++AC_CHECK_FUNCS(malloc_usable_size) ++ + dnl See if compiler supports some gcc-style attributes + + AC_CACHE_CHECK(for __attribute__((always_inline)), diff --git memory/build/Makefile.in memory/build/Makefile.in index dca0f48..af93ee0 100644 --- mozilla/memory/build/Makefile.in @@ -110,28 +180,67 @@ else SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,jemalloc,$(DEPTH)/memory/mozjemalloc) endif +diff --git memory/build/extraMallocFuncs.c memory/build/extraMallocFuncs.c +index 9d87629..76a2981 100644 +--- mozilla/memory/build/extraMallocFuncs.c ++++ mozilla/memory/build/extraMallocFuncs.c +@@ -94,7 +94,19 @@ wrap(wcsdup)(const wchar_t *src) + #endif + + #ifdef MOZ_JEMALLOC ++#if defined(MALLOC_H) && defined(MOZ_NATIVE_JEMALLOC) ++#include MALLOC_H ++#endif ++ ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) ++#define je_malloc_conf malloc_conf ++#define je_malloc_message malloc_message ++#endif ++ + /* Override some jemalloc defaults */ ++#if defined(MOZ_NATIVE_JEMALLOC) ++MOZ_EXTERNAL_VIS ++#endif + const char *je_malloc_conf = "narenas:1,lg_chunk:20"; + + #ifdef ANDROID diff --git memory/build/mozjemalloc_compat.c memory/build/mozjemalloc_compat.c -index 10a845a..57245f6 100644 +index 10a845a..798c299 100644 --- mozilla/memory/build/mozjemalloc_compat.c +++ mozilla/memory/build/mozjemalloc_compat.c -@@ -5,7 +5,15 @@ +@@ -5,7 +5,17 @@ #include "mozilla/Types.h" #include "jemalloc_types.h" -+#if defined(MALLOC_H) -+#include MALLOC_H /* for mallctl */ ++#if defined(MALLOC_H) && defined(MOZ_NATIVE_JEMALLOC) ++#include MALLOC_H +#endif + -+#if defined(MOZ_NATIVE_JEMALLOC) ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) +#define je_mallctl mallctl -+#else ++#endif ++ ++#if !defined(MOZ_NATIVE_JEMALLOC) extern int je_mallctl(const char*, void*, size_t*, void*, size_t); +#endif MOZ_EXPORT_API (void) jemalloc_stats(jemalloc_stats_t *stats) +diff --git memory/jemalloc/src/src/mutex.c memory/jemalloc/src/src/mutex.c +index 37a843e..55e18c2 100644 +--- mozilla/memory/jemalloc/src/src/mutex.c ++++ mozilla/memory/jemalloc/src/src/mutex.c +@@ -64,7 +64,7 @@ pthread_create(pthread_t *__restrict thread, + /******************************************************************************/ + + #ifdef JEMALLOC_MUTEX_INIT_CB +-int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, ++JEMALLOC_EXPORT int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, + void *(calloc_cb)(size_t, size_t)); + #endif + diff --git memory/mozalloc/mozalloc.cpp memory/mozalloc/mozalloc.cpp -index 5b61050b..16bba36 100644 +index 5b61050b..5b3399a 100644 --- mozilla/memory/mozalloc/mozalloc.cpp +++ mozilla/memory/mozalloc/mozalloc.cpp @@ -12,16 +12,13 @@ @@ -158,48 +267,59 @@ return malloc_size(ptr); -#elif defined(MOZ_MEMORY) || (defined(XP_LINUX) && !defined(ANDROID)) || defined(__FreeBSD__) - // Android bionic libc doesn't have malloc_usable_size. -+#elif defined(MOZ_MEMORY) || defined(HAVE_MALLOC_USABLE_SIZE) ++#elif defined(HAVE_MALLOC_USABLE_SIZE) || defined(MOZ_MEMORY) return malloc_usable_size(ptr); #elif defined(XP_WIN) return _msize(ptr); diff --git memory/mozjemalloc/jemalloc.h memory/mozjemalloc/jemalloc.h -index f0e0878..8f78123 100644 +index f0e0878..e74fb4d 100644 --- mozilla/memory/mozjemalloc/jemalloc.h +++ mozilla/memory/mozjemalloc/jemalloc.h -@@ -32,8 +32,8 @@ +@@ -32,23 +32,29 @@ #ifndef _JEMALLOC_H_ #define _JEMALLOC_H_ -#if defined(MOZ_MEMORY_DARWIN) -#include -+#if defined(MALLOC_H) -+#include MALLOC_H /* for malloc_good_size and nallocm */ ++#if defined(MALLOC_H) \ ++ && (defined(MOZ_NATIVE_JEMALLOC) || defined(MOZ_MEMORY_DARWIN)) ++#include MALLOC_H #endif #include "jemalloc_types.h" -@@ -51,7 +51,9 @@ void jemalloc_stats(jemalloc_stats_t *stats); - #if defined(MOZ_MEMORY_LINUX) ++#if defined(MOZ_NATIVE_JEMALLOC) || defined(__FreeBSD__) ++#define je_nallocm nallocm ++#endif ++ + #ifdef __cplusplus + extern "C" { + #endif + +-#if defined(MOZ_MEMORY_LINUX) ++#if defined(MOZ_NATIVE_JEMALLOC) \ ++ || defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD) __attribute__((weak)) #endif --#if defined(MOZ_JEMALLOC) -+#if defined(MOZ_NATIVE_JEMALLOC) -+#define je_nallocm nallocm -+#elif defined(MOZ_JEMALLOC) - int je_nallocm(size_t *rsize, size_t size, int flags); - #else - size_t je_malloc_good_size(size_t size); -diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in -index 7dbbbc6..0b06ad0 100644 ---- mozilla/toolkit/library/Makefile.in -+++ mozilla/toolkit/library/Makefile.in -@@ -346,6 +346,10 @@ EXTRA_DSO_LDOPTS += \ - $(SQLITE_LIBS) \ - $(NULL) + void jemalloc_stats(jemalloc_stats_t *stats); -+ifdef MOZ_NATIVE_JEMALLOC -+EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,memory,$(DIST)/lib) -+endif -+ - ifdef MOZ_NATIVE_JPEG - EXTRA_DSO_LDOPTS += $(MOZ_JPEG_LIBS) + /* Computes the usable size in advance. */ +-#if !defined(MOZ_MEMORY_DARWIN) +-#if defined(MOZ_MEMORY_LINUX) ++#if !defined(MOZ_NATIVE_JEMALLOC) && !defined(MOZ_MEMORY_DARWIN) ++#if defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD) + __attribute__((weak)) + #endif + #if defined(MOZ_JEMALLOC) +diff --git mozglue/build/Makefile.in mozglue/build/Makefile.in +index c333647..15ba505 100644 +--- mozilla/mozglue/build/Makefile.in ++++ mozilla/mozglue/build/Makefile.in +@@ -23,7 +23,7 @@ FORCE_STATIC_LIB = 1 endif + + # Keep jemalloc separated when mozglue is statically linked +-ifeq (1_1,$(MOZ_MEMORY)_$(FORCE_SHARED_LIB)) ++ifeq (1_1,$(MOZ_MEMORY)_$(or $(MOZ_NATIVE_JEMALLOC),$(FORCE_SHARED_LIB))) + SHARED_LIBRARY_LIBS = $(call EXPAND_LIBNAME_PATH,memory,$(DEPTH)/memory/build) + else + # Temporary, until bug 662814 lands From owner-freebsd-gecko@FreeBSD.ORG Sat Sep 22 09:45:33 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 16F72106564A for ; Sat, 22 Sep 2012 09:45:33 +0000 (UTC) (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.245.56]) by mx1.freebsd.org (Postfix) with ESMTP id 91DA98FC0A for ; Sat, 22 Sep 2012 09:45:32 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.245.56]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id q8M9jVv8045453 for ; Sat, 22 Sep 2012 09:45:31 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id q8M9jQBT044191 for freebsd-gecko@freebsd.org; Sat, 22 Sep 2012 09:45:26 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sat, 22 Sep 2012 09:45:26 GMT Message-Id: <201209220945.q8M9jQBT044191@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [SVN-Commit] r1026 - in trunk: mail/thunderbird/files www/firefox-nightly/files www/firefox/files www/libxul/files www/seamonkey/files X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 09:45:33 -0000 Author: jbeich Date: Sat Sep 22 09:45:26 2012 New Revision: 1026 Log: --enable-jemalloc by default on pre 10.x Added: trunk/mail/thunderbird/files/patch-mozilla-configure.in trunk/www/firefox-nightly/files/patch-configure.in trunk/www/firefox/files/patch-configure.in trunk/www/libxul/files/patch-configure.in trunk/www/seamonkey/files/patch-mozilla-configure.in Added: trunk/mail/thunderbird/files/patch-mozilla-configure.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/mail/thunderbird/files/patch-mozilla-configure.in Sat Sep 22 09:45:26 2012 (r1026) @@ -0,0 +1,35 @@ +--- mozilla/configure.in~ ++++ mozilla/configure.in +@@ -6925,6 +6925,13 @@ MOZ_ARG_ENABLE_BOOL(jemalloc, + MOZ_MEMORY=1, + MOZ_MEMORY=) + ++MOZ_JEMALLOC=1 ++MOZ_NATIVE_JEMALLOC=1 ++AC_CHECK_FUNCS(mallctl nallocm,, ++ [MOZ_NATIVE_JEMALLOC= ++ MOZ_MEMORY=1 ++ break]) ++ + if test "$NS_TRACE_MALLOC"; then + MOZ_MEMORY= + fi +@@ -6961,18 +6968,12 @@ else + fi + + if test -z "$MOZ_MEMORY"; then +- if test -n "$MOZ_JEMALLOC"; then +- MOZ_NATIVE_JEMALLOC=1 +- AC_CHECK_FUNCS(mallctl nallocm,, +- [MOZ_NATIVE_JEMALLOC= +- break]) + if test -n "$MOZ_NATIVE_JEMALLOC"; then + MOZ_MEMORY=1 + AC_DEFINE(MOZ_MEMORY) + AC_DEFINE(MOZ_JEMALLOC) + AC_DEFINE(MOZ_NATIVE_JEMALLOC) + fi +- fi + case "${target}" in + *-mingw*) + if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then Added: trunk/www/firefox-nightly/files/patch-configure.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/firefox-nightly/files/patch-configure.in Sat Sep 22 09:45:26 2012 (r1026) @@ -0,0 +1,35 @@ +--- configure.in~ ++++ configure.in +@@ -6925,6 +6925,13 @@ MOZ_ARG_ENABLE_BOOL(jemalloc, + MOZ_MEMORY=1, + MOZ_MEMORY=) + ++MOZ_JEMALLOC=1 ++MOZ_NATIVE_JEMALLOC=1 ++AC_CHECK_FUNCS(mallctl nallocm,, ++ [MOZ_NATIVE_JEMALLOC= ++ MOZ_MEMORY=1 ++ break]) ++ + if test "$NS_TRACE_MALLOC"; then + MOZ_MEMORY= + fi +@@ -6961,18 +6968,12 @@ else + fi + + if test -z "$MOZ_MEMORY"; then +- if test -n "$MOZ_JEMALLOC"; then +- MOZ_NATIVE_JEMALLOC=1 +- AC_CHECK_FUNCS(mallctl nallocm,, +- [MOZ_NATIVE_JEMALLOC= +- break]) + if test -n "$MOZ_NATIVE_JEMALLOC"; then + MOZ_MEMORY=1 + AC_DEFINE(MOZ_MEMORY) + AC_DEFINE(MOZ_JEMALLOC) + AC_DEFINE(MOZ_NATIVE_JEMALLOC) + fi +- fi + case "${target}" in + *-mingw*) + if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then Added: trunk/www/firefox/files/patch-configure.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/firefox/files/patch-configure.in Sat Sep 22 09:45:26 2012 (r1026) @@ -0,0 +1,35 @@ +--- configure.in~ ++++ configure.in +@@ -6925,6 +6925,13 @@ MOZ_ARG_ENABLE_BOOL(jemalloc, + MOZ_MEMORY=1, + MOZ_MEMORY=) + ++MOZ_JEMALLOC=1 ++MOZ_NATIVE_JEMALLOC=1 ++AC_CHECK_FUNCS(mallctl nallocm,, ++ [MOZ_NATIVE_JEMALLOC= ++ MOZ_MEMORY=1 ++ break]) ++ + if test "$NS_TRACE_MALLOC"; then + MOZ_MEMORY= + fi +@@ -6961,18 +6968,12 @@ else + fi + + if test -z "$MOZ_MEMORY"; then +- if test -n "$MOZ_JEMALLOC"; then +- MOZ_NATIVE_JEMALLOC=1 +- AC_CHECK_FUNCS(mallctl nallocm,, +- [MOZ_NATIVE_JEMALLOC= +- break]) + if test -n "$MOZ_NATIVE_JEMALLOC"; then + MOZ_MEMORY=1 + AC_DEFINE(MOZ_MEMORY) + AC_DEFINE(MOZ_JEMALLOC) + AC_DEFINE(MOZ_NATIVE_JEMALLOC) + fi +- fi + case "${target}" in + *-mingw*) + if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then Added: trunk/www/libxul/files/patch-configure.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/libxul/files/patch-configure.in Sat Sep 22 09:45:26 2012 (r1026) @@ -0,0 +1,35 @@ +--- configure.in~ ++++ configure.in +@@ -6925,6 +6925,13 @@ MOZ_ARG_ENABLE_BOOL(jemalloc, + MOZ_MEMORY=1, + MOZ_MEMORY=) + ++MOZ_JEMALLOC=1 ++MOZ_NATIVE_JEMALLOC=1 ++AC_CHECK_FUNCS(mallctl nallocm,, ++ [MOZ_NATIVE_JEMALLOC= ++ MOZ_MEMORY=1 ++ break]) ++ + if test "$NS_TRACE_MALLOC"; then + MOZ_MEMORY= + fi +@@ -6961,18 +6968,12 @@ else + fi + + if test -z "$MOZ_MEMORY"; then +- if test -n "$MOZ_JEMALLOC"; then +- MOZ_NATIVE_JEMALLOC=1 +- AC_CHECK_FUNCS(mallctl nallocm,, +- [MOZ_NATIVE_JEMALLOC= +- break]) + if test -n "$MOZ_NATIVE_JEMALLOC"; then + MOZ_MEMORY=1 + AC_DEFINE(MOZ_MEMORY) + AC_DEFINE(MOZ_JEMALLOC) + AC_DEFINE(MOZ_NATIVE_JEMALLOC) + fi +- fi + case "${target}" in + *-mingw*) + if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then Added: trunk/www/seamonkey/files/patch-mozilla-configure.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/seamonkey/files/patch-mozilla-configure.in Sat Sep 22 09:45:26 2012 (r1026) @@ -0,0 +1,35 @@ +--- mozilla/configure.in~ ++++ mozilla/configure.in +@@ -6925,6 +6925,13 @@ MOZ_ARG_ENABLE_BOOL(jemalloc, + MOZ_MEMORY=1, + MOZ_MEMORY=) + ++MOZ_JEMALLOC=1 ++MOZ_NATIVE_JEMALLOC=1 ++AC_CHECK_FUNCS(mallctl nallocm,, ++ [MOZ_NATIVE_JEMALLOC= ++ MOZ_MEMORY=1 ++ break]) ++ + if test "$NS_TRACE_MALLOC"; then + MOZ_MEMORY= + fi +@@ -6961,18 +6968,12 @@ else + fi + + if test -z "$MOZ_MEMORY"; then +- if test -n "$MOZ_JEMALLOC"; then +- MOZ_NATIVE_JEMALLOC=1 +- AC_CHECK_FUNCS(mallctl nallocm,, +- [MOZ_NATIVE_JEMALLOC= +- break]) + if test -n "$MOZ_NATIVE_JEMALLOC"; then + MOZ_MEMORY=1 + AC_DEFINE(MOZ_MEMORY) + AC_DEFINE(MOZ_JEMALLOC) + AC_DEFINE(MOZ_NATIVE_JEMALLOC) + fi +- fi + case "${target}" in + *-mingw*) + if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then From owner-freebsd-gecko@FreeBSD.ORG Sat Sep 22 10:47:10 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D3FE31065670 for ; Sat, 22 Sep 2012 10:47:10 +0000 (UTC) (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.245.56]) by mx1.freebsd.org (Postfix) with ESMTP id 4440D8FC08 for ; Sat, 22 Sep 2012 10:47:09 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.245.56]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id q8MAl8k3045549 for ; Sat, 22 Sep 2012 10:47:08 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id q8MAl3xI045024 for freebsd-gecko@freebsd.org; Sat, 22 Sep 2012 10:47:03 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sat, 22 Sep 2012 10:47:03 GMT Message-Id: <201209221047.q8MAl3xI045024@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [SVN-Commit] r1027 - in trunk: Mk www/libxul www/libxul-esr X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 10:47:10 -0000 Author: jbeich Date: Sat Sep 22 10:47:03 2012 New Revision: 1027 Log: backout r1010, it was part of a failed idea to unify patches Replaced: trunk/www/libxul/ - copied from r1026, trunk/www/libxul-esr/ Deleted: trunk/www/libxul-esr/ Modified: trunk/Mk/bsd.gecko.mk trunk/www/libxul/Makefile Modified: trunk/Mk/bsd.gecko.mk ============================================================================== --- trunk/Mk/bsd.gecko.mk Sat Sep 22 09:45:26 2012 (r1026) +++ trunk/Mk/bsd.gecko.mk Sat Sep 22 10:47:03 2012 (r1027) @@ -14,7 +14,7 @@ # WITH_GECKO= libxul # # The valid backends are: -# libxul libxul-esr libxul19 +# libxul libxul19 # # See below for more details. # ======================= /USERS ================================ @@ -36,7 +36,7 @@ # Users should use the following syntax: # -# WITH_GECKO= libxul libxul-esr libxul19 +# WITH_GECKO= libxul libxul19 # Use libxul whenever a port supports it, falling back on libxul19. # WITH_GECKO= libxul # Sets your preferred backend. With this example, libxul will always @@ -47,7 +47,7 @@ # # Ports should use the following: # -# USE_GECKO= libxul libxul-esr libxul19 +# USE_GECKO= libxul libxul19 # The list of gecko backends that the port supports. Unless the user # overrides it with WITH_GECKO, the first gecko listed in USE_GECKO # will be the default. In the above example, www/libxul will be used @@ -59,7 +59,7 @@ # if ${GECKO}=="libxul19" # # Example: -# USE_GECKO= libxul libxul-esr libxul19 +# USE_GECKO= libxul libxul19 # # post-patch: # @${REINPALCE_CMD} -e 's|mozilla-|${GECKO}-|' \ @@ -69,7 +69,7 @@ # has been chosen. # # Example: -# USE_GECKO= libxul libxul-esr libxul19 +# USE_GECKO= libxul libxul19 # # post-patch: # .if ${GECKO}=="libxul19" @@ -77,10 +77,9 @@ # ${MOZSRC}/configure # .endif -_GECKO_ALL= libxul libxul-esr libxul19 +_GECKO_ALL= libxul libxul19 libxul_PLIST= ${LOCALBASE}/lib/libxul/libxul.so -libxul-esr_PLIST= ${LOCALBASE}/lib/libxul/libxul.so libxul19_PLIST= ${LOCALBASE}/lib/libxul/libxul.so .for gecko in ${_GECKO_ALL} Modified: trunk/www/libxul/Makefile ============================================================================== --- trunk/www/libxul-esr/Makefile Sat Sep 22 09:45:26 2012 (r1026) +++ trunk/www/libxul/Makefile Sat Sep 22 10:47:03 2012 (r1027) @@ -22,8 +22,7 @@ unzip:${PORTSDIR}/archivers/unzip WRKSRC= ${WRKDIR}/mozilla-esr10 -LATEST_LINK= libxul-esr -CONFLICTS= mozilla-[0-9]* libxul-1.9.* libxul-16.* +CONFLICTS= mozilla-[0-9]* libxul-1.9.* USE_AUTOTOOLS= autoconf213:env WANT_GNOME= yes From owner-freebsd-gecko@FreeBSD.ORG Sat Sep 22 16:31:45 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2C488106564A for ; Sat, 22 Sep 2012 16:31:45 +0000 (UTC) (envelope-from andy@neu.net) Received: from mail.neu.net (unknown [IPv6:2607:fc50:0:d300:216:3eff:fe54:f1c6]) by mx1.freebsd.org (Postfix) with ESMTP id E29EB8FC14 for ; Sat, 22 Sep 2012 16:31:44 +0000 (UTC) Received: from neu.net (neu.net [199.48.129.194]) by mail.neu.net (8.14.5/8.14.5) with ESMTP id q8MGVfm9031499 for ; Sat, 22 Sep 2012 12:31:41 -0400 (EDT) (envelope-from andy@neu.net) Date: Sat, 22 Sep 2012 12:31:41 -0400 (EDT) From: AN To: freebsd-gecko@freebsd.org In-Reply-To: <201209220945.q8M9jQBT044191@trillian.chruetertee.ch> Message-ID: References: <201209220945.q8M9jQBT044191@trillian.chruetertee.ch> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Virus-Scanned: clamav-milter 0.97.5 at my.mail.server X-Virus-Status: Clean X-Spam-Status: No, score=0.0 required=4.5 tests=RP_MATCHES_RCVD autolearn=unavailable version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on mail.neu.net Subject: Re: [SVN-Commit] r1026 - in trunk: mail/thunderbird/files www/firefox-nightly/files www/firefox/files www/libxul/files www/seamonkey/files X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 16:31:45 -0000 FreeBSD FBSD10 10.0-CURRENT FreeBSD 10.0-CURRENT #20 r240684: Tue Sep 18 21:03:32 EDT 2012 root@FBSD10:/usr/obj/usr/src/sys/MYKERNEL amd64 Updated to revision 1027. [root@FBSD10 /home/root/ff_nightly]# make clean ===> Cleaning for firefox-nightly-18.0.107671,1 [root@FBSD10 /home/root/ff_nightly]# make update && make makesum && time make all deinstall install clean ===> Found saved configuration for firefox-nightly-18.0.104181,1 => b461a7cd250e.tar.bz2 doesn't seem to exist in /usr/ports/distfiles/firefox-nightly. => Attempting to fetch http://hg.mozilla.org/mozilla-central/archive/b461a7cd250e.tar.bz2 fetch: http://hg.mozilla.org/mozilla-central/archive/b461a7cd250e.tar.bz2: size of remote file is not known b461a7cd250e.tar.bz2 85 MB 665 kBps ===> Found saved configuration for firefox-nightly-18.0.104181,1 ===> Extracting for firefox-nightly-18.0.107808,1 ===> Found saved configuration for firefox-nightly-18.0.104181,1 => SHA256 Checksum OK for firefox-nightly/b461a7cd250e.tar.bz2. ===> firefox-nightly-18.0.107808,1 depends on file: /usr/local/bin/perl5.14.2 - found ===> Patching for firefox-nightly-18.0.107808,1 ===> firefox-nightly-18.0.107808,1 depends on file: /usr/local/bin/perl5.14.2 - found ===> Applying FreeBSD patches for firefox-nightly-18.0.107808,1 1 out of 1 hunks failed--saving rejects to gfx/qcms/qcmstypes.h.rej => Patch patch-gfx-qcms-qcmstypes.h failed to apply cleanly. => Patch(es) patch-alsapulse patch-browser-app-nsBrowserApp.cpp patch-bug543241 patch-bug685258 patch-bug722975 patch-bug732340 patch-bug778078 patch-bug783463 patch-bug783505 patch-bug788955 patch-build-pgo-profileserver.py patch-clang32-libc++-visibility-hack patch-config-baseconfig.mk patch-configure.in patch-extensions-spellcheck-hunspell-src-mozHunspell.cpp applied cleanly. *** [do-patch] Error code 1 Stop in /home/root/ff_nightly. *** [/home/root/ff_nightly/work/.patch_done.firefox._usr_local] Error code 1 Stop in /home/root/ff_nightly. *** [build] Error code 1 Stop in /home/root/ff_nightly. From owner-freebsd-gecko@FreeBSD.ORG Sat Sep 22 21:54:07 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7A330106564A for ; Sat, 22 Sep 2012 21:54:07 +0000 (UTC) (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.245.56]) by mx1.freebsd.org (Postfix) with ESMTP id 019AE8FC12 for ; Sat, 22 Sep 2012 21:54:06 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.245.56]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id q8MLs0Gq044873 for ; Sat, 22 Sep 2012 21:54:00 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id q8MLrtVl044261 for freebsd-gecko@freebsd.org; Sat, 22 Sep 2012 21:53:55 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sat, 22 Sep 2012 21:53:55 GMT Message-Id: <201209222153.q8MLrtVl044261@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [SVN-Commit] r1028 - trunk/www/firefox-nightly/files X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 21:54:07 -0000 Author: jbeich Date: Sat Sep 22 21:53:54 2012 New Revision: 1028 Log: fix patch conflict after bug 785321 landed Reported by: AN Modified: trunk/www/firefox-nightly/files/patch-gfx-qcms-qcmstypes.h Modified: trunk/www/firefox-nightly/files/patch-gfx-qcms-qcmstypes.h ============================================================================== --- trunk/www/firefox-nightly/files/patch-gfx-qcms-qcmstypes.h Sat Sep 22 10:47:03 2012 (r1027) +++ trunk/www/firefox-nightly/files/patch-gfx-qcms-qcmstypes.h Sat Sep 22 21:53:54 2012 (r1028) @@ -6,6 +6,6 @@ #include -#elif !defined(__intptr_t_defined) && !defined(_UINTPTR_T_DEFINED) +#elif !defined(__intptr_t_defined) && !defined(_INTPTR_T_DECLARED) - typedef PRUptrdiff uintptr_t; + typedef unsigned long uintptr_t; #endif #endif From owner-freebsd-gecko@FreeBSD.ORG Sat Sep 22 21:54:14 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D20A8106566B for ; Sat, 22 Sep 2012 21:54:14 +0000 (UTC) (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.245.56]) by mx1.freebsd.org (Postfix) with ESMTP id C9B8A8FC0A for ; Sat, 22 Sep 2012 21:54:13 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.245.56]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id q8MLsCmF047260 for ; Sat, 22 Sep 2012 21:54:12 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id q8MLs7c7045731 for freebsd-gecko@freebsd.org; Sat, 22 Sep 2012 21:54:07 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sat, 22 Sep 2012 21:54:07 GMT Message-Id: <201209222154.q8MLs7c7045731@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [SVN-Commit] r1029 - in trunk: Mk mail/thunderbird-esr/files mail/thunderbird/files www/firefox-esr/files www/firefox-nightly/files www/firefox/files www/libxul/files www/seamonkey/files X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 21:54:15 -0000 Author: jbeich Date: Sat Sep 22 21:54:07 2012 New Revision: 1029 Log: use libjpeg-turbo color conversion if available Added: trunk/mail/thunderbird-esr/files/patch-bug791305 trunk/mail/thunderbird/files/patch-bug791305 trunk/www/firefox-esr/files/patch-bug791305 trunk/www/firefox-nightly/files/patch-bug791305 trunk/www/firefox/files/patch-bug791305 trunk/www/libxul/files/patch-bug791305 trunk/www/seamonkey/files/patch-bug791305 Modified: trunk/Mk/bsd.gecko.mk Modified: trunk/Mk/bsd.gecko.mk ============================================================================== --- trunk/Mk/bsd.gecko.mk Sat Sep 22 21:53:54 2012 (r1028) +++ trunk/Mk/bsd.gecko.mk Sat Sep 22 21:54:07 2012 (r1029) @@ -565,6 +565,8 @@ hunspell_LIB_DEPENDS= hunspell-1.3:${PORTSDIR}/textproc/hunspell hunspell_MOZ_OPTIONS= --enable-system-hunspell +# XXX: depends on pkgng package flavor support +#jpeg_LIB_DEPENDS= jpeg:${PORTSDIR}/graphics/libjpeg-turbo jpeg_LIB_DEPENDS= jpeg:${PORTSDIR}/graphics/jpeg jpeg_MOZ_OPTIONS= --with-system-jpeg=${LOCALBASE} jpeg_EXTRACT_AFTER_ARGS= --exclude mozilla*/media/libjpeg Added: trunk/mail/thunderbird-esr/files/patch-bug791305 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/mail/thunderbird-esr/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) @@ -0,0 +1,107 @@ +commit c269a16 +Author: Jeff Muizelaar +Date: Fri Sep 14 15:54:55 2012 -0400 + + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey + + libjpeg-turbo supports converting directly to a format compatible with cairo's + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives + us SSE2 and NEON version of this function. + + --HG-- + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 +--- + configure.in | 6 +- + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- + 2 files changed, 20 insertions(+), 297 deletions(-) + +diff --git mozilla/image/decoders/nsJPEGDecoder.cpp mozilla/image/decoders/nsJPEGDecoder.cpp +index c1fb515..1d2a259 100644 +--- mozilla/image/decoders/nsJPEGDecoder.cpp ++++ mozilla/image/decoders/nsJPEGDecoder.cpp +@@ -22,6 +22,13 @@ + extern "C" { + #include "iccjpeg.h" + ++#ifdef JCS_EXTENSIONS ++#if defined(IS_BIG_ENDIAN) ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB ++#else ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX ++#endif ++#else + /* Colorspace conversion (copied from jpegint.h) */ + struct jpeg_color_deconverter { + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); +@@ -34,6 +41,7 @@ METHODDEF(void) + ycc_rgb_convert_argb (j_decompress_ptr cinfo, + JSAMPIMAGE input_buf, JDIMENSION input_row, + JSAMPARRAY output_buf, int num_rows); ++#endif + } + + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + case JCS_GRAYSCALE: + case JCS_RGB: + case JCS_YCbCr: ++#ifdef JCS_EXTENSIONS ++ // if we're not color managing we can decode directly to ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB ++ if (mCMSMode != eCMSMode_All) { ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; ++ mInfo.out_color_components = 4; ++ } else { ++ mInfo.out_color_space = JCS_RGB; ++ } ++#else + mInfo.out_color_space = JCS_RGB; ++#endif + break; + case JCS_CMYK: + case JCS_YCCK: +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + return; /* I/O suspension */ + } + ++#ifndef JCS_EXTENSIONS + /* Force to use our YCbCr to Packed RGB converter when possible */ + if (!mTransform && (mCMSMode != eCMSMode_All) && + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; + } ++#endif + + /* If this is a progressive JPEG ... */ + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) + PRUint32 *imageRow = ((PRUint32*)mImageData) + + (mInfo.output_scanline * mInfo.output_width); + ++#ifdef JCS_EXTENSIONS ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { ++#else + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { ++#endif + /* Special case: scanline will be directly converted into packed ARGB */ + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { + *suspend = true; /* suspend */ +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) + } // namespace mozilla + + ++#ifndef JCS_EXTENSIONS + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ + + /* +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, + } + } + } ++#endif + + + /**************** Inverted CMYK -> RGB conversion **************/ + /* Added: trunk/mail/thunderbird/files/patch-bug791305 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/mail/thunderbird/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) @@ -0,0 +1,107 @@ +commit c269a16 +Author: Jeff Muizelaar +Date: Fri Sep 14 15:54:55 2012 -0400 + + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey + + libjpeg-turbo supports converting directly to a format compatible with cairo's + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives + us SSE2 and NEON version of this function. + + --HG-- + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 +--- + configure.in | 6 +- + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- + 2 files changed, 20 insertions(+), 297 deletions(-) + +diff --git mozilla/image/decoders/nsJPEGDecoder.cpp mozilla/image/decoders/nsJPEGDecoder.cpp +index c1fb515..1d2a259 100644 +--- mozilla/image/decoders/nsJPEGDecoder.cpp ++++ mozilla/image/decoders/nsJPEGDecoder.cpp +@@ -22,6 +22,13 @@ + extern "C" { + #include "iccjpeg.h" + ++#ifdef JCS_EXTENSIONS ++#if defined(IS_BIG_ENDIAN) ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB ++#else ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX ++#endif ++#else + /* Colorspace conversion (copied from jpegint.h) */ + struct jpeg_color_deconverter { + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); +@@ -34,6 +41,7 @@ METHODDEF(void) + ycc_rgb_convert_argb (j_decompress_ptr cinfo, + JSAMPIMAGE input_buf, JDIMENSION input_row, + JSAMPARRAY output_buf, int num_rows); ++#endif + } + + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + case JCS_GRAYSCALE: + case JCS_RGB: + case JCS_YCbCr: ++#ifdef JCS_EXTENSIONS ++ // if we're not color managing we can decode directly to ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB ++ if (mCMSMode != eCMSMode_All) { ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; ++ mInfo.out_color_components = 4; ++ } else { ++ mInfo.out_color_space = JCS_RGB; ++ } ++#else + mInfo.out_color_space = JCS_RGB; ++#endif + break; + case JCS_CMYK: + case JCS_YCCK: +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + return; /* I/O suspension */ + } + ++#ifndef JCS_EXTENSIONS + /* Force to use our YCbCr to Packed RGB converter when possible */ + if (!mTransform && (mCMSMode != eCMSMode_All) && + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; + } ++#endif + + /* If this is a progressive JPEG ... */ + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) + PRUint32 *imageRow = ((PRUint32*)mImageData) + + (mInfo.output_scanline * mInfo.output_width); + ++#ifdef JCS_EXTENSIONS ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { ++#else + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { ++#endif + /* Special case: scanline will be directly converted into packed ARGB */ + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { + *suspend = true; /* suspend */ +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) + } // namespace mozilla + + ++#ifndef JCS_EXTENSIONS + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ + + /* +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, + } + } + } ++#endif + + + /**************** Inverted CMYK -> RGB conversion **************/ + /* Added: trunk/www/firefox-esr/files/patch-bug791305 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/firefox-esr/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) @@ -0,0 +1,107 @@ +commit c269a16 +Author: Jeff Muizelaar +Date: Fri Sep 14 15:54:55 2012 -0400 + + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey + + libjpeg-turbo supports converting directly to a format compatible with cairo's + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives + us SSE2 and NEON version of this function. + + --HG-- + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 +--- + configure.in | 6 +- + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- + 2 files changed, 20 insertions(+), 297 deletions(-) + +diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp +index c1fb515..1d2a259 100644 +--- image/decoders/nsJPEGDecoder.cpp ++++ image/decoders/nsJPEGDecoder.cpp +@@ -22,6 +22,13 @@ + extern "C" { + #include "iccjpeg.h" + ++#ifdef JCS_EXTENSIONS ++#if defined(IS_BIG_ENDIAN) ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB ++#else ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX ++#endif ++#else + /* Colorspace conversion (copied from jpegint.h) */ + struct jpeg_color_deconverter { + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); +@@ -34,6 +41,7 @@ METHODDEF(void) + ycc_rgb_convert_argb (j_decompress_ptr cinfo, + JSAMPIMAGE input_buf, JDIMENSION input_row, + JSAMPARRAY output_buf, int num_rows); ++#endif + } + + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + case JCS_GRAYSCALE: + case JCS_RGB: + case JCS_YCbCr: ++#ifdef JCS_EXTENSIONS ++ // if we're not color managing we can decode directly to ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB ++ if (mCMSMode != eCMSMode_All) { ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; ++ mInfo.out_color_components = 4; ++ } else { ++ mInfo.out_color_space = JCS_RGB; ++ } ++#else + mInfo.out_color_space = JCS_RGB; ++#endif + break; + case JCS_CMYK: + case JCS_YCCK: +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + return; /* I/O suspension */ + } + ++#ifndef JCS_EXTENSIONS + /* Force to use our YCbCr to Packed RGB converter when possible */ + if (!mTransform && (mCMSMode != eCMSMode_All) && + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; + } ++#endif + + /* If this is a progressive JPEG ... */ + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) + PRUint32 *imageRow = ((PRUint32*)mImageData) + + (mInfo.output_scanline * mInfo.output_width); + ++#ifdef JCS_EXTENSIONS ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { ++#else + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { ++#endif + /* Special case: scanline will be directly converted into packed ARGB */ + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { + *suspend = true; /* suspend */ +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) + } // namespace mozilla + + ++#ifndef JCS_EXTENSIONS + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ + + /* +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, + } + } + } ++#endif + + + /**************** Inverted CMYK -> RGB conversion **************/ + /* Added: trunk/www/firefox-nightly/files/patch-bug791305 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/firefox-nightly/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) @@ -0,0 +1,397 @@ +commit c269a16 +Author: Jeff Muizelaar +Date: Fri Sep 14 15:54:55 2012 -0400 + + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey + + libjpeg-turbo supports converting directly to a format compatible with cairo's + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives + us SSE2 and NEON version of this function. + + --HG-- + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 +--- + configure.in | 6 +- + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- + 2 files changed, 20 insertions(+), 297 deletions(-) + +diff --git configure.in configure.in +index f0aeb5d..1c01010 100644 +--- configure.in ++++ configure.in +@@ -4027,11 +4027,7 @@ if test "$MOZ_NATIVE_JPEG" = 1; then + #include ], + [ #if JPEG_LIB_VERSION < $MOZJPEG + #error "Insufficient JPEG library version ($MOZJPEG required)." +- #endif +- #ifndef JCS_EXTENSIONS +- #error "libjpeg-turbo JCS_EXTENSIONS required" +- #endif +- ], ++ #endif ], + MOZ_NATIVE_JPEG=1, + AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg])) + fi +diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp +index 8fa8200..1d2a259 100644 +--- image/decoders/nsJPEGDecoder.cpp ++++ image/decoders/nsJPEGDecoder.cpp +@@ -21,13 +21,28 @@ + + extern "C" { + #include "iccjpeg.h" +-} + ++#ifdef JCS_EXTENSIONS + #if defined(IS_BIG_ENDIAN) + #define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB + #else + #define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX + #endif ++#else ++/* Colorspace conversion (copied from jpegint.h) */ ++struct jpeg_color_deconverter { ++ JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); ++ JMETHOD(void, color_convert, (j_decompress_ptr cinfo, ++ JSAMPIMAGE input_buf, JDIMENSION input_row, ++ JSAMPARRAY output_buf, int num_rows)); ++}; ++ ++METHODDEF(void) ++ycc_rgb_convert_argb (j_decompress_ptr cinfo, ++ JSAMPIMAGE input_buf, JDIMENSION input_row, ++ JSAMPARRAY output_buf, int num_rows); ++#endif ++} + + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); + +@@ -324,6 +340,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, uint32_t aCount) + case JCS_GRAYSCALE: + case JCS_RGB: + case JCS_YCbCr: ++#ifdef JCS_EXTENSIONS + // if we're not color managing we can decode directly to + // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB + if (mCMSMode != eCMSMode_All) { +@@ -332,6 +349,9 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, uint32_t aCount) + } else { + mInfo.out_color_space = JCS_RGB; + } ++#else ++ mInfo.out_color_space = JCS_RGB; ++#endif + break; + case JCS_CMYK: + case JCS_YCCK: +@@ -399,6 +419,15 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, uint32_t aCount) + return; /* I/O suspension */ + } + ++#ifndef JCS_EXTENSIONS ++ /* Force to use our YCbCr to Packed RGB converter when possible */ ++ if (!mTransform && (mCMSMode != eCMSMode_All) && ++ mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { ++ /* Special case for the most common case: transform from YCbCr direct into packed ARGB */ ++ mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ ++ mInfo.cconvert->color_convert = ycc_rgb_convert_argb; ++ } ++#endif + + /* If this is a progressive JPEG ... */ + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; +@@ -544,7 +573,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) + uint32_t *imageRow = ((uint32_t*)mImageData) + + (mInfo.output_scanline * mInfo.output_width); + ++#ifdef JCS_EXTENSIONS + if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { ++#else ++ if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { ++#endif + /* Special case: scanline will be directly converted into packed ARGB */ + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { + *suspend = true; /* suspend */ +@@ -854,6 +887,282 @@ term_source (j_decompress_ptr jd) + } // namespace mozilla + + ++#ifndef JCS_EXTENSIONS ++/**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ ++ ++/* ++ * YCbCr is defined per CCIR 601-1, except that Cb and Cr are ++ * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5. ++ * The conversion equations to be implemented are therefore ++ * R = Y + 1.40200 * Cr ++ * G = Y - 0.34414 * Cb - 0.71414 * Cr ++ * B = Y + 1.77200 * Cb ++ * where Cb and Cr represent the incoming values less CENTERJSAMPLE. ++ * (These numbers are derived from TIFF 6.0 section 21, dated 3-June-92.) ++ * ++ * To avoid floating-point arithmetic, we represent the fractional constants ++ * as integers scaled up by 2^16 (about 4 digits precision); we have to divide ++ * the products by 2^16, with appropriate rounding, to get the correct answer. ++ * Notice that Y, being an integral input, does not contribute any fraction ++ * so it need not participate in the rounding. ++ * ++ * For even more speed, we avoid doing any multiplications in the inner loop ++ * by precalculating the constants times Cb and Cr for all possible values. ++ * For 8-bit JSAMPLEs this is very reasonable (only 256 entries per table); ++ * for 12-bit samples it is still acceptable. It's not very reasonable for ++ * 16-bit samples, but if you want lossless storage you shouldn't be changing ++ * colorspace anyway. ++ * The Cr=>R and Cb=>B values can be rounded to integers in advance; the ++ * values for the G calculation are left scaled up, since we must add them ++ * together before rounding. ++ */ ++ ++#define SCALEBITS 16 /* speediest right-shift on some machines */ ++ ++/* Use static tables for color processing. */ ++/* Four tables, each 256 entries of 4 bytes totals 4K which is not bad... */ ++ ++const int Cr_r_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ ++ -0xb3, -0xb2, -0xb1, -0xaf, -0xae, -0xac, ++ -0xab, -0xaa, -0xa8, -0xa7, -0xa5, -0xa4, ++ -0xa3, -0xa1, -0xa0, -0x9e, -0x9d, -0x9c, ++ -0x9a, -0x99, -0x97, -0x96, -0x95, -0x93, ++ -0x92, -0x90, -0x8f, -0x8e, -0x8c, -0x8b, ++ -0x89, -0x88, -0x87, -0x85, -0x84, -0x82, ++ -0x81, -0x80, -0x7e, -0x7d, -0x7b, -0x7a, ++ -0x79, -0x77, -0x76, -0x74, -0x73, -0x72, ++ -0x70, -0x6f, -0x6d, -0x6c, -0x6b, -0x69, ++ -0x68, -0x66, -0x65, -0x64, -0x62, -0x61, ++ -0x5f, -0x5e, -0x5d, -0x5b, -0x5a, -0x58, ++ -0x57, -0x56, -0x54, -0x53, -0x51, -0x50, ++ -0x4f, -0x4d, -0x4c, -0x4a, -0x49, -0x48, ++ -0x46, -0x45, -0x43, -0x42, -0x40, -0x3f, ++ -0x3e, -0x3c, -0x3b, -0x39, -0x38, -0x37, ++ -0x35, -0x34, -0x32, -0x31, -0x30, -0x2e, ++ -0x2d, -0x2b, -0x2a, -0x29, -0x27, -0x26, ++ -0x24, -0x23, -0x22, -0x20, -0x1f, -0x1d, ++ -0x1c, -0x1b, -0x19, -0x18, -0x16, -0x15, ++ -0x14, -0x12, -0x11, -0x0f, -0x0e, -0x0d, ++ -0x0b, -0x0a, -0x08, -0x07, -0x06, -0x04, ++ -0x03, -0x01, 0x00, 0x01, 0x03, 0x04, ++ 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x0d, ++ 0x0e, 0x0f, 0x11, 0x12, 0x14, 0x15, ++ 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1d, ++ 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, ++ 0x27, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, ++ 0x30, 0x31, 0x32, 0x34, 0x35, 0x37, ++ 0x38, 0x39, 0x3b, 0x3c, 0x3e, 0x3f, ++ 0x40, 0x42, 0x43, 0x45, 0x46, 0x48, ++ 0x49, 0x4a, 0x4c, 0x4d, 0x4f, 0x50, ++ 0x51, 0x53, 0x54, 0x56, 0x57, 0x58, ++ 0x5a, 0x5b, 0x5d, 0x5e, 0x5f, 0x61, ++ 0x62, 0x64, 0x65, 0x66, 0x68, 0x69, ++ 0x6b, 0x6c, 0x6d, 0x6f, 0x70, 0x72, ++ 0x73, 0x74, 0x76, 0x77, 0x79, 0x7a, ++ 0x7b, 0x7d, 0x7e, 0x80, 0x81, 0x82, ++ 0x84, 0x85, 0x87, 0x88, 0x89, 0x8b, ++ 0x8c, 0x8e, 0x8f, 0x90, 0x92, 0x93, ++ 0x95, 0x96, 0x97, 0x99, 0x9a, 0x9c, ++ 0x9d, 0x9e, 0xa0, 0xa1, 0xa3, 0xa4, ++ 0xa5, 0xa7, 0xa8, 0xaa, 0xab, 0xac, ++ 0xae, 0xaf, 0xb1, 0xb2, ++ }; ++ ++const int Cb_b_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ ++ -0xe3, -0xe1, -0xdf, -0xde, -0xdc, -0xda, ++ -0xd8, -0xd6, -0xd5, -0xd3, -0xd1, -0xcf, ++ -0xce, -0xcc, -0xca, -0xc8, -0xc6, -0xc5, ++ -0xc3, -0xc1, -0xbf, -0xbe, -0xbc, -0xba, ++ -0xb8, -0xb7, -0xb5, -0xb3, -0xb1, -0xaf, ++ -0xae, -0xac, -0xaa, -0xa8, -0xa7, -0xa5, ++ -0xa3, -0xa1, -0x9f, -0x9e, -0x9c, -0x9a, ++ -0x98, -0x97, -0x95, -0x93, -0x91, -0x90, ++ -0x8e, -0x8c, -0x8a, -0x88, -0x87, -0x85, ++ -0x83, -0x81, -0x80, -0x7e, -0x7c, -0x7a, ++ -0x78, -0x77, -0x75, -0x73, -0x71, -0x70, ++ -0x6e, -0x6c, -0x6a, -0x69, -0x67, -0x65, ++ -0x63, -0x61, -0x60, -0x5e, -0x5c, -0x5a, ++ -0x59, -0x57, -0x55, -0x53, -0x52, -0x50, ++ -0x4e, -0x4c, -0x4a, -0x49, -0x47, -0x45, ++ -0x43, -0x42, -0x40, -0x3e, -0x3c, -0x3a, ++ -0x39, -0x37, -0x35, -0x33, -0x32, -0x30, ++ -0x2e, -0x2c, -0x2b, -0x29, -0x27, -0x25, ++ -0x23, -0x22, -0x20, -0x1e, -0x1c, -0x1b, ++ -0x19, -0x17, -0x15, -0x13, -0x12, -0x10, ++ -0x0e, -0x0c, -0x0b, -0x09, -0x07, -0x05, ++ -0x04, -0x02, 0x00, 0x02, 0x04, 0x05, ++ 0x07, 0x09, 0x0b, 0x0c, 0x0e, 0x10, ++ 0x12, 0x13, 0x15, 0x17, 0x19, 0x1b, ++ 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x25, ++ 0x27, 0x29, 0x2b, 0x2c, 0x2e, 0x30, ++ 0x32, 0x33, 0x35, 0x37, 0x39, 0x3a, ++ 0x3c, 0x3e, 0x40, 0x42, 0x43, 0x45, ++ 0x47, 0x49, 0x4a, 0x4c, 0x4e, 0x50, ++ 0x52, 0x53, 0x55, 0x57, 0x59, 0x5a, ++ 0x5c, 0x5e, 0x60, 0x61, 0x63, 0x65, ++ 0x67, 0x69, 0x6a, 0x6c, 0x6e, 0x70, ++ 0x71, 0x73, 0x75, 0x77, 0x78, 0x7a, ++ 0x7c, 0x7e, 0x80, 0x81, 0x83, 0x85, ++ 0x87, 0x88, 0x8a, 0x8c, 0x8e, 0x90, ++ 0x91, 0x93, 0x95, 0x97, 0x98, 0x9a, ++ 0x9c, 0x9e, 0x9f, 0xa1, 0xa3, 0xa5, ++ 0xa7, 0xa8, 0xaa, 0xac, 0xae, 0xaf, ++ 0xb1, 0xb3, 0xb5, 0xb7, 0xb8, 0xba, ++ 0xbc, 0xbe, 0xbf, 0xc1, 0xc3, 0xc5, ++ 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xcf, ++ 0xd1, 0xd3, 0xd5, 0xd6, 0xd8, 0xda, ++ 0xdc, 0xde, 0xdf, 0xe1, ++ }; ++ ++const int Cr_g_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ ++ 0x5b6900, 0x5ab22e, 0x59fb5c, 0x59448a, 0x588db8, 0x57d6e6, ++ 0x572014, 0x566942, 0x55b270, 0x54fb9e, 0x5444cc, 0x538dfa, ++ 0x52d728, 0x522056, 0x516984, 0x50b2b2, 0x4ffbe0, 0x4f450e, ++ 0x4e8e3c, 0x4dd76a, 0x4d2098, 0x4c69c6, 0x4bb2f4, 0x4afc22, ++ 0x4a4550, 0x498e7e, 0x48d7ac, 0x4820da, 0x476a08, 0x46b336, ++ 0x45fc64, 0x454592, 0x448ec0, 0x43d7ee, 0x43211c, 0x426a4a, ++ 0x41b378, 0x40fca6, 0x4045d4, 0x3f8f02, 0x3ed830, 0x3e215e, ++ 0x3d6a8c, 0x3cb3ba, 0x3bfce8, 0x3b4616, 0x3a8f44, 0x39d872, ++ 0x3921a0, 0x386ace, 0x37b3fc, 0x36fd2a, 0x364658, 0x358f86, ++ 0x34d8b4, 0x3421e2, 0x336b10, 0x32b43e, 0x31fd6c, 0x31469a, ++ 0x308fc8, 0x2fd8f6, 0x2f2224, 0x2e6b52, 0x2db480, 0x2cfdae, ++ 0x2c46dc, 0x2b900a, 0x2ad938, 0x2a2266, 0x296b94, 0x28b4c2, ++ 0x27fdf0, 0x27471e, 0x26904c, 0x25d97a, 0x2522a8, 0x246bd6, ++ 0x23b504, 0x22fe32, 0x224760, 0x21908e, 0x20d9bc, 0x2022ea, ++ 0x1f6c18, 0x1eb546, 0x1dfe74, 0x1d47a2, 0x1c90d0, 0x1bd9fe, ++ 0x1b232c, 0x1a6c5a, 0x19b588, 0x18feb6, 0x1847e4, 0x179112, ++ 0x16da40, 0x16236e, 0x156c9c, 0x14b5ca, 0x13fef8, 0x134826, ++ 0x129154, 0x11da82, 0x1123b0, 0x106cde, 0x0fb60c, 0x0eff3a, ++ 0x0e4868, 0x0d9196, 0x0cdac4, 0x0c23f2, 0x0b6d20, 0x0ab64e, ++ 0x09ff7c, 0x0948aa, 0x0891d8, 0x07db06, 0x072434, 0x066d62, ++ 0x05b690, 0x04ffbe, 0x0448ec, 0x03921a, 0x02db48, 0x022476, ++ 0x016da4, 0x00b6d2, 0x000000, -0x00b6d2, -0x016da4, -0x022476, ++ -0x02db48, -0x03921a, -0x0448ec, -0x04ffbe, -0x05b690, -0x066d62, ++ -0x072434, -0x07db06, -0x0891d8, -0x0948aa, -0x09ff7c, -0x0ab64e, ++ -0x0b6d20, -0x0c23f2, -0x0cdac4, -0x0d9196, -0x0e4868, -0x0eff3a, ++ -0x0fb60c, -0x106cde, -0x1123b0, -0x11da82, -0x129154, -0x134826, ++ -0x13fef8, -0x14b5ca, -0x156c9c, -0x16236e, -0x16da40, -0x179112, ++ -0x1847e4, -0x18feb6, -0x19b588, -0x1a6c5a, -0x1b232c, -0x1bd9fe, ++ -0x1c90d0, -0x1d47a2, -0x1dfe74, -0x1eb546, -0x1f6c18, -0x2022ea, ++ -0x20d9bc, -0x21908e, -0x224760, -0x22fe32, -0x23b504, -0x246bd6, ++ -0x2522a8, -0x25d97a, -0x26904c, -0x27471e, -0x27fdf0, -0x28b4c2, ++ -0x296b94, -0x2a2266, -0x2ad938, -0x2b900a, -0x2c46dc, -0x2cfdae, ++ -0x2db480, -0x2e6b52, -0x2f2224, -0x2fd8f6, -0x308fc8, -0x31469a, ++ -0x31fd6c, -0x32b43e, -0x336b10, -0x3421e2, -0x34d8b4, -0x358f86, ++ -0x364658, -0x36fd2a, -0x37b3fc, -0x386ace, -0x3921a0, -0x39d872, ++ -0x3a8f44, -0x3b4616, -0x3bfce8, -0x3cb3ba, -0x3d6a8c, -0x3e215e, ++ -0x3ed830, -0x3f8f02, -0x4045d4, -0x40fca6, -0x41b378, -0x426a4a, ++ -0x43211c, -0x43d7ee, -0x448ec0, -0x454592, -0x45fc64, -0x46b336, ++ -0x476a08, -0x4820da, -0x48d7ac, -0x498e7e, -0x4a4550, -0x4afc22, ++ -0x4bb2f4, -0x4c69c6, -0x4d2098, -0x4dd76a, -0x4e8e3c, -0x4f450e, ++ -0x4ffbe0, -0x50b2b2, -0x516984, -0x522056, -0x52d728, -0x538dfa, ++ -0x5444cc, -0x54fb9e, -0x55b270, -0x566942, -0x572014, -0x57d6e6, ++ -0x588db8, -0x59448a, -0x59fb5c, -0x5ab22e, ++ }; ++ ++const int Cb_g_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ ++ 0x2c8d00, 0x2c34e6, 0x2bdccc, 0x2b84b2, 0x2b2c98, 0x2ad47e, ++ 0x2a7c64, 0x2a244a, 0x29cc30, 0x297416, 0x291bfc, 0x28c3e2, ++ 0x286bc8, 0x2813ae, 0x27bb94, 0x27637a, 0x270b60, 0x26b346, ++ 0x265b2c, 0x260312, 0x25aaf8, 0x2552de, 0x24fac4, 0x24a2aa, ++ 0x244a90, 0x23f276, 0x239a5c, 0x234242, 0x22ea28, 0x22920e, ++ 0x2239f4, 0x21e1da, 0x2189c0, 0x2131a6, 0x20d98c, 0x208172, ++ 0x202958, 0x1fd13e, 0x1f7924, 0x1f210a, 0x1ec8f0, 0x1e70d6, ++ 0x1e18bc, 0x1dc0a2, 0x1d6888, 0x1d106e, 0x1cb854, 0x1c603a, ++ 0x1c0820, 0x1bb006, 0x1b57ec, 0x1affd2, 0x1aa7b8, 0x1a4f9e, ++ 0x19f784, 0x199f6a, 0x194750, 0x18ef36, 0x18971c, 0x183f02, ++ 0x17e6e8, 0x178ece, 0x1736b4, 0x16de9a, 0x168680, 0x162e66, ++ 0x15d64c, 0x157e32, 0x152618, 0x14cdfe, 0x1475e4, 0x141dca, ++ 0x13c5b0, 0x136d96, 0x13157c, 0x12bd62, 0x126548, 0x120d2e, ++ 0x11b514, 0x115cfa, 0x1104e0, 0x10acc6, 0x1054ac, 0x0ffc92, ++ 0x0fa478, 0x0f4c5e, 0x0ef444, 0x0e9c2a, 0x0e4410, 0x0debf6, ++ 0x0d93dc, 0x0d3bc2, 0x0ce3a8, 0x0c8b8e, 0x0c3374, 0x0bdb5a, ++ 0x0b8340, 0x0b2b26, 0x0ad30c, 0x0a7af2, 0x0a22d8, 0x09cabe, ++ 0x0972a4, 0x091a8a, 0x08c270, 0x086a56, 0x08123c, 0x07ba22, ++ 0x076208, 0x0709ee, 0x06b1d4, 0x0659ba, 0x0601a0, 0x05a986, ++ 0x05516c, 0x04f952, 0x04a138, 0x04491e, 0x03f104, 0x0398ea, ++ 0x0340d0, 0x02e8b6, 0x02909c, 0x023882, 0x01e068, 0x01884e, ++ 0x013034, 0x00d81a, 0x008000, 0x0027e6, -0x003034, -0x00884e, ++ -0x00e068, -0x013882, -0x01909c, -0x01e8b6, -0x0240d0, -0x0298ea, ++ -0x02f104, -0x03491e, -0x03a138, -0x03f952, -0x04516c, -0x04a986, ++ -0x0501a0, -0x0559ba, -0x05b1d4, -0x0609ee, -0x066208, -0x06ba22, ++ -0x07123c, -0x076a56, -0x07c270, -0x081a8a, -0x0872a4, -0x08cabe, ++ -0x0922d8, -0x097af2, -0x09d30c, -0x0a2b26, -0x0a8340, -0x0adb5a, ++ -0x0b3374, -0x0b8b8e, -0x0be3a8, -0x0c3bc2, -0x0c93dc, -0x0cebf6, ++ -0x0d4410, -0x0d9c2a, -0x0df444, -0x0e4c5e, -0x0ea478, -0x0efc92, ++ -0x0f54ac, -0x0facc6, -0x1004e0, -0x105cfa, -0x10b514, -0x110d2e, ++ -0x116548, -0x11bd62, -0x12157c, -0x126d96, -0x12c5b0, -0x131dca, ++ -0x1375e4, -0x13cdfe, -0x142618, -0x147e32, -0x14d64c, -0x152e66, ++ -0x158680, -0x15de9a, -0x1636b4, -0x168ece, -0x16e6e8, -0x173f02, ++ -0x17971c, -0x17ef36, -0x184750, -0x189f6a, -0x18f784, -0x194f9e, ++ -0x19a7b8, -0x19ffd2, -0x1a57ec, -0x1ab006, -0x1b0820, -0x1b603a, ++ -0x1bb854, -0x1c106e, -0x1c6888, -0x1cc0a2, -0x1d18bc, -0x1d70d6, ++ -0x1dc8f0, -0x1e210a, -0x1e7924, -0x1ed13e, -0x1f2958, -0x1f8172, ++ -0x1fd98c, -0x2031a6, -0x2089c0, -0x20e1da, -0x2139f4, -0x21920e, ++ -0x21ea28, -0x224242, -0x229a5c, -0x22f276, -0x234a90, -0x23a2aa, ++ -0x23fac4, -0x2452de, -0x24aaf8, -0x250312, -0x255b2c, -0x25b346, ++ -0x260b60, -0x26637a, -0x26bb94, -0x2713ae, -0x276bc8, -0x27c3e2, ++ -0x281bfc, -0x287416, -0x28cc30, -0x29244a, -0x297c64, -0x29d47e, ++ -0x2a2c98, -0x2a84b2, -0x2adccc, -0x2b34e6, ++ }; ++ ++ ++/* We assume that right shift corresponds to signed division by 2 with ++ * rounding towards minus infinity. This is correct for typical "arithmetic ++ * shift" instructions that shift in copies of the sign bit. But some ++ * C compilers implement >> with an unsigned shift. For these machines you ++ * must define RIGHT_SHIFT_IS_UNSIGNED. ++ * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity. ++ * It is only applied with constant shift counts. SHIFT_TEMPS must be ++ * included in the variables of any routine using RIGHT_SHIFT. ++ */ ++ ++#ifdef RIGHT_SHIFT_IS_UNSIGNED ++#define SHIFT_TEMPS INT32 shift_temp; ++#define RIGHT_SHIFT(x,shft) \ ++ ((shift_temp = (x)) < 0 ? \ ++ (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \ ++ (shift_temp >> (shft))) ++#else ++#define SHIFT_TEMPS ++#define RIGHT_SHIFT(x,shft) ((x) >> (shft)) ++#endif ++ ++ ++METHODDEF(void) ++ycc_rgb_convert_argb (j_decompress_ptr cinfo, ++ JSAMPIMAGE input_buf, JDIMENSION input_row, ++ JSAMPARRAY output_buf, int num_rows) ++{ ++ JDIMENSION num_cols = cinfo->output_width; ++ JSAMPLE * range_limit = cinfo->sample_range_limit; ++ ++ SHIFT_TEMPS ++ ++ /* This is used if we don't have SSE2 */ ++ ++ while (--num_rows >= 0) { ++ JSAMPROW inptr0 = input_buf[0][input_row]; ++ JSAMPROW inptr1 = input_buf[1][input_row]; ++ JSAMPROW inptr2 = input_buf[2][input_row]; ++ input_row++; ++ uint32_t *outptr = (uint32_t *) *output_buf++; ++ for (JDIMENSION col = 0; col < num_cols; col++) { ++ int y = GETJSAMPLE(inptr0[col]); ++ int cb = GETJSAMPLE(inptr1[col]); ++ int cr = GETJSAMPLE(inptr2[col]); ++ JSAMPLE * range_limit_y = range_limit + y; ++ /* Range-limiting is essential due to noise introduced by DCT losses. */ ++ outptr[col] = 0xFF000000 | ++ ( range_limit_y[Cr_r_tab[cr]] << 16 ) | ++ ( range_limit_y[((int) RIGHT_SHIFT(Cb_g_tab[cb] + Cr_g_tab[cr], SCALEBITS))] << 8 ) | ++ ( range_limit_y[Cb_b_tab[cb]] ); ++ } ++ } ++} ++#endif ++ ++ + /**************** Inverted CMYK -> RGB conversion **************/ + /* + * Input is (Inverted) CMYK stored as 4 bytes per pixel. Added: trunk/www/firefox/files/patch-bug791305 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/firefox/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) @@ -0,0 +1,107 @@ +commit c269a16 +Author: Jeff Muizelaar +Date: Fri Sep 14 15:54:55 2012 -0400 + + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey + + libjpeg-turbo supports converting directly to a format compatible with cairo's + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives + us SSE2 and NEON version of this function. + + --HG-- + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 +--- + configure.in | 6 +- + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- + 2 files changed, 20 insertions(+), 297 deletions(-) + +diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp +index c1fb515..1d2a259 100644 +--- image/decoders/nsJPEGDecoder.cpp ++++ image/decoders/nsJPEGDecoder.cpp +@@ -22,6 +22,13 @@ + extern "C" { + #include "iccjpeg.h" + ++#ifdef JCS_EXTENSIONS ++#if defined(IS_BIG_ENDIAN) ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB ++#else ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX ++#endif ++#else + /* Colorspace conversion (copied from jpegint.h) */ + struct jpeg_color_deconverter { + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); +@@ -34,6 +41,7 @@ METHODDEF(void) + ycc_rgb_convert_argb (j_decompress_ptr cinfo, + JSAMPIMAGE input_buf, JDIMENSION input_row, + JSAMPARRAY output_buf, int num_rows); ++#endif + } + + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + case JCS_GRAYSCALE: + case JCS_RGB: + case JCS_YCbCr: ++#ifdef JCS_EXTENSIONS ++ // if we're not color managing we can decode directly to ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB ++ if (mCMSMode != eCMSMode_All) { ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; ++ mInfo.out_color_components = 4; ++ } else { ++ mInfo.out_color_space = JCS_RGB; ++ } ++#else + mInfo.out_color_space = JCS_RGB; ++#endif + break; + case JCS_CMYK: + case JCS_YCCK: +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + return; /* I/O suspension */ + } + ++#ifndef JCS_EXTENSIONS + /* Force to use our YCbCr to Packed RGB converter when possible */ + if (!mTransform && (mCMSMode != eCMSMode_All) && + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; + } ++#endif + + /* If this is a progressive JPEG ... */ + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) + PRUint32 *imageRow = ((PRUint32*)mImageData) + + (mInfo.output_scanline * mInfo.output_width); + ++#ifdef JCS_EXTENSIONS ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { ++#else + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { ++#endif + /* Special case: scanline will be directly converted into packed ARGB */ + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { + *suspend = true; /* suspend */ +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) + } // namespace mozilla + + ++#ifndef JCS_EXTENSIONS + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ + + /* +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, + } + } + } ++#endif + + + /**************** Inverted CMYK -> RGB conversion **************/ + /* Added: trunk/www/libxul/files/patch-bug791305 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/libxul/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) @@ -0,0 +1,107 @@ +commit c269a16 +Author: Jeff Muizelaar +Date: Fri Sep 14 15:54:55 2012 -0400 + + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey + + libjpeg-turbo supports converting directly to a format compatible with cairo's + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives + us SSE2 and NEON version of this function. + + --HG-- + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 +--- + configure.in | 6 +- + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- + 2 files changed, 20 insertions(+), 297 deletions(-) + +diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp +index c1fb515..1d2a259 100644 +--- image/decoders/nsJPEGDecoder.cpp ++++ image/decoders/nsJPEGDecoder.cpp +@@ -22,6 +22,13 @@ + extern "C" { + #include "iccjpeg.h" + ++#ifdef JCS_EXTENSIONS ++#if defined(IS_BIG_ENDIAN) ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB ++#else ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX ++#endif ++#else + /* Colorspace conversion (copied from jpegint.h) */ + struct jpeg_color_deconverter { + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); +@@ -34,6 +41,7 @@ METHODDEF(void) + ycc_rgb_convert_argb (j_decompress_ptr cinfo, + JSAMPIMAGE input_buf, JDIMENSION input_row, + JSAMPARRAY output_buf, int num_rows); ++#endif + } + + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + case JCS_GRAYSCALE: + case JCS_RGB: + case JCS_YCbCr: ++#ifdef JCS_EXTENSIONS ++ // if we're not color managing we can decode directly to ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB ++ if (mCMSMode != eCMSMode_All) { ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; ++ mInfo.out_color_components = 4; ++ } else { ++ mInfo.out_color_space = JCS_RGB; ++ } ++#else + mInfo.out_color_space = JCS_RGB; ++#endif + break; + case JCS_CMYK: + case JCS_YCCK: +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + return; /* I/O suspension */ + } + ++#ifndef JCS_EXTENSIONS + /* Force to use our YCbCr to Packed RGB converter when possible */ + if (!mTransform && (mCMSMode != eCMSMode_All) && + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; + } ++#endif + + /* If this is a progressive JPEG ... */ + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) + PRUint32 *imageRow = ((PRUint32*)mImageData) + + (mInfo.output_scanline * mInfo.output_width); + ++#ifdef JCS_EXTENSIONS ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { ++#else + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { ++#endif + /* Special case: scanline will be directly converted into packed ARGB */ + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { + *suspend = true; /* suspend */ +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) + } // namespace mozilla + + ++#ifndef JCS_EXTENSIONS + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ + + /* +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, + } + } + } ++#endif + + + /**************** Inverted CMYK -> RGB conversion **************/ + /* Added: trunk/www/seamonkey/files/patch-bug791305 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/seamonkey/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) @@ -0,0 +1,107 @@ +commit c269a16 +Author: Jeff Muizelaar +Date: Fri Sep 14 15:54:55 2012 -0400 + + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey + + libjpeg-turbo supports converting directly to a format compatible with cairo's + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives + us SSE2 and NEON version of this function. + + --HG-- + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 +--- + configure.in | 6 +- + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- + 2 files changed, 20 insertions(+), 297 deletions(-) + +diff --git mozilla/image/decoders/nsJPEGDecoder.cpp mozilla/image/decoders/nsJPEGDecoder.cpp +index c1fb515..1d2a259 100644 +--- mozilla/image/decoders/nsJPEGDecoder.cpp ++++ mozilla/image/decoders/nsJPEGDecoder.cpp +@@ -22,6 +22,13 @@ + extern "C" { + #include "iccjpeg.h" + ++#ifdef JCS_EXTENSIONS ++#if defined(IS_BIG_ENDIAN) ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB ++#else ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX ++#endif ++#else + /* Colorspace conversion (copied from jpegint.h) */ + struct jpeg_color_deconverter { + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); +@@ -34,6 +41,7 @@ METHODDEF(void) + ycc_rgb_convert_argb (j_decompress_ptr cinfo, + JSAMPIMAGE input_buf, JDIMENSION input_row, + JSAMPARRAY output_buf, int num_rows); ++#endif + } + + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + case JCS_GRAYSCALE: + case JCS_RGB: + case JCS_YCbCr: ++#ifdef JCS_EXTENSIONS ++ // if we're not color managing we can decode directly to ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB ++ if (mCMSMode != eCMSMode_All) { ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; ++ mInfo.out_color_components = 4; ++ } else { ++ mInfo.out_color_space = JCS_RGB; ++ } ++#else + mInfo.out_color_space = JCS_RGB; ++#endif + break; + case JCS_CMYK: + case JCS_YCCK: +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + return; /* I/O suspension */ + } + ++#ifndef JCS_EXTENSIONS + /* Force to use our YCbCr to Packed RGB converter when possible */ + if (!mTransform && (mCMSMode != eCMSMode_All) && + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; + } ++#endif + + /* If this is a progressive JPEG ... */ + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) + PRUint32 *imageRow = ((PRUint32*)mImageData) + + (mInfo.output_scanline * mInfo.output_width); + ++#ifdef JCS_EXTENSIONS ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { ++#else + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { ++#endif + /* Special case: scanline will be directly converted into packed ARGB */ + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { + *suspend = true; /* suspend */ +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) + } // namespace mozilla + + ++#ifndef JCS_EXTENSIONS + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ + + /* +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, + } + } + } ++#endif + + + /**************** Inverted CMYK -> RGB conversion **************/ + /* From owner-freebsd-gecko@FreeBSD.ORG Sat Sep 22 22:23:51 2012 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A3FC1065670 for ; Sat, 22 Sep 2012 22:23:51 +0000 (UTC) (envelope-from andy@neu.net) Received: from mail.neu.net (unknown [IPv6:2607:fc50:0:d300:216:3eff:fe54:f1c6]) by mx1.freebsd.org (Postfix) with ESMTP id 139678FC12 for ; Sat, 22 Sep 2012 22:23:49 +0000 (UTC) Received: from neu.net (neu.net [199.48.129.194]) by mail.neu.net (8.14.5/8.14.5) with ESMTP id q8MMNkZs032512 for ; Sat, 22 Sep 2012 18:23:46 -0400 (EDT) (envelope-from andy@neu.net) Date: Sat, 22 Sep 2012 18:23:46 -0400 (EDT) From: AN To: freebsd-gecko@freebsd.org In-Reply-To: <201209222154.q8MLs7c7045731@trillian.chruetertee.ch> Message-ID: References: <201209222154.q8MLs7c7045731@trillian.chruetertee.ch> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Virus-Scanned: clamav-milter 0.97.5 at my.mail.server X-Virus-Status: Clean X-Spam-Status: No, score=0.0 required=4.5 tests=RP_MATCHES_RCVD autolearn=unavailable version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on mail.neu.net Subject: Re: [SVN-Commit] r1029 - in trunk: Mk mail/thunderbird-esr/files mail/thunderbird/files www/firefox-esr/files www/firefox-nightly/files www/firefox/files www/libxul/files www/seamonkey/files X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 22:23:51 -0000 Fixed, thank you. ===> Registering installation for firefox-nightly-18.0.107808,1 On Sat, 22 Sep 2012, svn-freebsd-gecko@chruetertee.ch wrote: > Author: jbeich > Date: Sat Sep 22 21:54:07 2012 > New Revision: 1029 > > Log: > use libjpeg-turbo color conversion if available > > Added: > trunk/mail/thunderbird-esr/files/patch-bug791305 > trunk/mail/thunderbird/files/patch-bug791305 > trunk/www/firefox-esr/files/patch-bug791305 > trunk/www/firefox-nightly/files/patch-bug791305 > trunk/www/firefox/files/patch-bug791305 > trunk/www/libxul/files/patch-bug791305 > trunk/www/seamonkey/files/patch-bug791305 > Modified: > trunk/Mk/bsd.gecko.mk > > Modified: trunk/Mk/bsd.gecko.mk > ============================================================================== > --- trunk/Mk/bsd.gecko.mk Sat Sep 22 21:53:54 2012 (r1028) > +++ trunk/Mk/bsd.gecko.mk Sat Sep 22 21:54:07 2012 (r1029) > @@ -565,6 +565,8 @@ > hunspell_LIB_DEPENDS= hunspell-1.3:${PORTSDIR}/textproc/hunspell > hunspell_MOZ_OPTIONS= --enable-system-hunspell > > +# XXX: depends on pkgng package flavor support > +#jpeg_LIB_DEPENDS= jpeg:${PORTSDIR}/graphics/libjpeg-turbo > jpeg_LIB_DEPENDS= jpeg:${PORTSDIR}/graphics/jpeg > jpeg_MOZ_OPTIONS= --with-system-jpeg=${LOCALBASE} > jpeg_EXTRACT_AFTER_ARGS= --exclude mozilla*/media/libjpeg > > Added: trunk/mail/thunderbird-esr/files/patch-bug791305 > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ trunk/mail/thunderbird-esr/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) > @@ -0,0 +1,107 @@ > +commit c269a16 > +Author: Jeff Muizelaar > +Date: Fri Sep 14 15:54:55 2012 -0400 > + > + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey > + > + libjpeg-turbo supports converting directly to a format compatible with cairo's > + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives > + us SSE2 and NEON version of this function. > + > + --HG-- > + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 > +--- > + configure.in | 6 +- > + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- > + 2 files changed, 20 insertions(+), 297 deletions(-) > + > +diff --git mozilla/image/decoders/nsJPEGDecoder.cpp mozilla/image/decoders/nsJPEGDecoder.cpp > +index c1fb515..1d2a259 100644 > +--- mozilla/image/decoders/nsJPEGDecoder.cpp > ++++ mozilla/image/decoders/nsJPEGDecoder.cpp > +@@ -22,6 +22,13 @@ > + extern "C" { > + #include "iccjpeg.h" > + > ++#ifdef JCS_EXTENSIONS > ++#if defined(IS_BIG_ENDIAN) > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB > ++#else > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX > ++#endif > ++#else > + /* Colorspace conversion (copied from jpegint.h) */ > + struct jpeg_color_deconverter { > + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); > +@@ -34,6 +41,7 @@ METHODDEF(void) > + ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + JSAMPIMAGE input_buf, JDIMENSION input_row, > + JSAMPARRAY output_buf, int num_rows); > ++#endif > + } > + > + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); > +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + case JCS_GRAYSCALE: > + case JCS_RGB: > + case JCS_YCbCr: > ++#ifdef JCS_EXTENSIONS > ++ // if we're not color managing we can decode directly to > ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB > ++ if (mCMSMode != eCMSMode_All) { > ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; > ++ mInfo.out_color_components = 4; > ++ } else { > ++ mInfo.out_color_space = JCS_RGB; > ++ } > ++#else > + mInfo.out_color_space = JCS_RGB; > ++#endif > + break; > + case JCS_CMYK: > + case JCS_YCCK: > +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + return; /* I/O suspension */ > + } > + > ++#ifndef JCS_EXTENSIONS > + /* Force to use our YCbCr to Packed RGB converter when possible */ > + if (!mTransform && (mCMSMode != eCMSMode_All) && > + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { > +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ > + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; > + } > ++#endif > + > + /* If this is a progressive JPEG ... */ > + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; > +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) > + PRUint32 *imageRow = ((PRUint32*)mImageData) + > + (mInfo.output_scanline * mInfo.output_width); > + > ++#ifdef JCS_EXTENSIONS > ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { > ++#else > + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { > ++#endif > + /* Special case: scanline will be directly converted into packed ARGB */ > + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { > + *suspend = true; /* suspend */ > +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) > + } // namespace mozilla > + > + > ++#ifndef JCS_EXTENSIONS > + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ > + > + /* > +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + } > + } > + } > ++#endif > + > + > + /**************** Inverted CMYK -> RGB conversion **************/ > + /* > > Added: trunk/mail/thunderbird/files/patch-bug791305 > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ trunk/mail/thunderbird/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) > @@ -0,0 +1,107 @@ > +commit c269a16 > +Author: Jeff Muizelaar > +Date: Fri Sep 14 15:54:55 2012 -0400 > + > + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey > + > + libjpeg-turbo supports converting directly to a format compatible with cairo's > + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives > + us SSE2 and NEON version of this function. > + > + --HG-- > + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 > +--- > + configure.in | 6 +- > + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- > + 2 files changed, 20 insertions(+), 297 deletions(-) > + > +diff --git mozilla/image/decoders/nsJPEGDecoder.cpp mozilla/image/decoders/nsJPEGDecoder.cpp > +index c1fb515..1d2a259 100644 > +--- mozilla/image/decoders/nsJPEGDecoder.cpp > ++++ mozilla/image/decoders/nsJPEGDecoder.cpp > +@@ -22,6 +22,13 @@ > + extern "C" { > + #include "iccjpeg.h" > + > ++#ifdef JCS_EXTENSIONS > ++#if defined(IS_BIG_ENDIAN) > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB > ++#else > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX > ++#endif > ++#else > + /* Colorspace conversion (copied from jpegint.h) */ > + struct jpeg_color_deconverter { > + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); > +@@ -34,6 +41,7 @@ METHODDEF(void) > + ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + JSAMPIMAGE input_buf, JDIMENSION input_row, > + JSAMPARRAY output_buf, int num_rows); > ++#endif > + } > + > + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); > +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + case JCS_GRAYSCALE: > + case JCS_RGB: > + case JCS_YCbCr: > ++#ifdef JCS_EXTENSIONS > ++ // if we're not color managing we can decode directly to > ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB > ++ if (mCMSMode != eCMSMode_All) { > ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; > ++ mInfo.out_color_components = 4; > ++ } else { > ++ mInfo.out_color_space = JCS_RGB; > ++ } > ++#else > + mInfo.out_color_space = JCS_RGB; > ++#endif > + break; > + case JCS_CMYK: > + case JCS_YCCK: > +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + return; /* I/O suspension */ > + } > + > ++#ifndef JCS_EXTENSIONS > + /* Force to use our YCbCr to Packed RGB converter when possible */ > + if (!mTransform && (mCMSMode != eCMSMode_All) && > + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { > +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ > + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; > + } > ++#endif > + > + /* If this is a progressive JPEG ... */ > + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; > +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) > + PRUint32 *imageRow = ((PRUint32*)mImageData) + > + (mInfo.output_scanline * mInfo.output_width); > + > ++#ifdef JCS_EXTENSIONS > ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { > ++#else > + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { > ++#endif > + /* Special case: scanline will be directly converted into packed ARGB */ > + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { > + *suspend = true; /* suspend */ > +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) > + } // namespace mozilla > + > + > ++#ifndef JCS_EXTENSIONS > + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ > + > + /* > +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + } > + } > + } > ++#endif > + > + > + /**************** Inverted CMYK -> RGB conversion **************/ > + /* > > Added: trunk/www/firefox-esr/files/patch-bug791305 > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ trunk/www/firefox-esr/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) > @@ -0,0 +1,107 @@ > +commit c269a16 > +Author: Jeff Muizelaar > +Date: Fri Sep 14 15:54:55 2012 -0400 > + > + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey > + > + libjpeg-turbo supports converting directly to a format compatible with cairo's > + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives > + us SSE2 and NEON version of this function. > + > + --HG-- > + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 > +--- > + configure.in | 6 +- > + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- > + 2 files changed, 20 insertions(+), 297 deletions(-) > + > +diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp > +index c1fb515..1d2a259 100644 > +--- image/decoders/nsJPEGDecoder.cpp > ++++ image/decoders/nsJPEGDecoder.cpp > +@@ -22,6 +22,13 @@ > + extern "C" { > + #include "iccjpeg.h" > + > ++#ifdef JCS_EXTENSIONS > ++#if defined(IS_BIG_ENDIAN) > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB > ++#else > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX > ++#endif > ++#else > + /* Colorspace conversion (copied from jpegint.h) */ > + struct jpeg_color_deconverter { > + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); > +@@ -34,6 +41,7 @@ METHODDEF(void) > + ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + JSAMPIMAGE input_buf, JDIMENSION input_row, > + JSAMPARRAY output_buf, int num_rows); > ++#endif > + } > + > + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); > +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + case JCS_GRAYSCALE: > + case JCS_RGB: > + case JCS_YCbCr: > ++#ifdef JCS_EXTENSIONS > ++ // if we're not color managing we can decode directly to > ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB > ++ if (mCMSMode != eCMSMode_All) { > ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; > ++ mInfo.out_color_components = 4; > ++ } else { > ++ mInfo.out_color_space = JCS_RGB; > ++ } > ++#else > + mInfo.out_color_space = JCS_RGB; > ++#endif > + break; > + case JCS_CMYK: > + case JCS_YCCK: > +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + return; /* I/O suspension */ > + } > + > ++#ifndef JCS_EXTENSIONS > + /* Force to use our YCbCr to Packed RGB converter when possible */ > + if (!mTransform && (mCMSMode != eCMSMode_All) && > + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { > +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ > + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; > + } > ++#endif > + > + /* If this is a progressive JPEG ... */ > + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; > +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) > + PRUint32 *imageRow = ((PRUint32*)mImageData) + > + (mInfo.output_scanline * mInfo.output_width); > + > ++#ifdef JCS_EXTENSIONS > ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { > ++#else > + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { > ++#endif > + /* Special case: scanline will be directly converted into packed ARGB */ > + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { > + *suspend = true; /* suspend */ > +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) > + } // namespace mozilla > + > + > ++#ifndef JCS_EXTENSIONS > + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ > + > + /* > +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + } > + } > + } > ++#endif > + > + > + /**************** Inverted CMYK -> RGB conversion **************/ > + /* > > Added: trunk/www/firefox-nightly/files/patch-bug791305 > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ trunk/www/firefox-nightly/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) > @@ -0,0 +1,397 @@ > +commit c269a16 > +Author: Jeff Muizelaar > +Date: Fri Sep 14 15:54:55 2012 -0400 > + > + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey > + > + libjpeg-turbo supports converting directly to a format compatible with cairo's > + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives > + us SSE2 and NEON version of this function. > + > + --HG-- > + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 > +--- > + configure.in | 6 +- > + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- > + 2 files changed, 20 insertions(+), 297 deletions(-) > + > +diff --git configure.in configure.in > +index f0aeb5d..1c01010 100644 > +--- configure.in > ++++ configure.in > +@@ -4027,11 +4027,7 @@ if test "$MOZ_NATIVE_JPEG" = 1; then > + #include ], > + [ #if JPEG_LIB_VERSION < $MOZJPEG > + #error "Insufficient JPEG library version ($MOZJPEG required)." > +- #endif > +- #ifndef JCS_EXTENSIONS > +- #error "libjpeg-turbo JCS_EXTENSIONS required" > +- #endif > +- ], > ++ #endif ], > + MOZ_NATIVE_JPEG=1, > + AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg])) > + fi > +diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp > +index 8fa8200..1d2a259 100644 > +--- image/decoders/nsJPEGDecoder.cpp > ++++ image/decoders/nsJPEGDecoder.cpp > +@@ -21,13 +21,28 @@ > + > + extern "C" { > + #include "iccjpeg.h" > +-} > + > ++#ifdef JCS_EXTENSIONS > + #if defined(IS_BIG_ENDIAN) > + #define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB > + #else > + #define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX > + #endif > ++#else > ++/* Colorspace conversion (copied from jpegint.h) */ > ++struct jpeg_color_deconverter { > ++ JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); > ++ JMETHOD(void, color_convert, (j_decompress_ptr cinfo, > ++ JSAMPIMAGE input_buf, JDIMENSION input_row, > ++ JSAMPARRAY output_buf, int num_rows)); > ++}; > ++ > ++METHODDEF(void) > ++ycc_rgb_convert_argb (j_decompress_ptr cinfo, > ++ JSAMPIMAGE input_buf, JDIMENSION input_row, > ++ JSAMPARRAY output_buf, int num_rows); > ++#endif > ++} > + > + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); > + > +@@ -324,6 +340,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, uint32_t aCount) > + case JCS_GRAYSCALE: > + case JCS_RGB: > + case JCS_YCbCr: > ++#ifdef JCS_EXTENSIONS > + // if we're not color managing we can decode directly to > + // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB > + if (mCMSMode != eCMSMode_All) { > +@@ -332,6 +349,9 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, uint32_t aCount) > + } else { > + mInfo.out_color_space = JCS_RGB; > + } > ++#else > ++ mInfo.out_color_space = JCS_RGB; > ++#endif > + break; > + case JCS_CMYK: > + case JCS_YCCK: > +@@ -399,6 +419,15 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, uint32_t aCount) > + return; /* I/O suspension */ > + } > + > ++#ifndef JCS_EXTENSIONS > ++ /* Force to use our YCbCr to Packed RGB converter when possible */ > ++ if (!mTransform && (mCMSMode != eCMSMode_All) && > ++ mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { > ++ /* Special case for the most common case: transform from YCbCr direct into packed ARGB */ > ++ mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ > ++ mInfo.cconvert->color_convert = ycc_rgb_convert_argb; > ++ } > ++#endif > + > + /* If this is a progressive JPEG ... */ > + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; > +@@ -544,7 +573,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) > + uint32_t *imageRow = ((uint32_t*)mImageData) + > + (mInfo.output_scanline * mInfo.output_width); > + > ++#ifdef JCS_EXTENSIONS > + if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { > ++#else > ++ if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { > ++#endif > + /* Special case: scanline will be directly converted into packed ARGB */ > + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { > + *suspend = true; /* suspend */ > +@@ -854,6 +887,282 @@ term_source (j_decompress_ptr jd) > + } // namespace mozilla > + > + > ++#ifndef JCS_EXTENSIONS > ++/**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ > ++ > ++/* > ++ * YCbCr is defined per CCIR 601-1, except that Cb and Cr are > ++ * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5. > ++ * The conversion equations to be implemented are therefore > ++ * R = Y + 1.40200 * Cr > ++ * G = Y - 0.34414 * Cb - 0.71414 * Cr > ++ * B = Y + 1.77200 * Cb > ++ * where Cb and Cr represent the incoming values less CENTERJSAMPLE. > ++ * (These numbers are derived from TIFF 6.0 section 21, dated 3-June-92.) > ++ * > ++ * To avoid floating-point arithmetic, we represent the fractional constants > ++ * as integers scaled up by 2^16 (about 4 digits precision); we have to divide > ++ * the products by 2^16, with appropriate rounding, to get the correct answer. > ++ * Notice that Y, being an integral input, does not contribute any fraction > ++ * so it need not participate in the rounding. > ++ * > ++ * For even more speed, we avoid doing any multiplications in the inner loop > ++ * by precalculating the constants times Cb and Cr for all possible values. > ++ * For 8-bit JSAMPLEs this is very reasonable (only 256 entries per table); > ++ * for 12-bit samples it is still acceptable. It's not very reasonable for > ++ * 16-bit samples, but if you want lossless storage you shouldn't be changing > ++ * colorspace anyway. > ++ * The Cr=>R and Cb=>B values can be rounded to integers in advance; the > ++ * values for the G calculation are left scaled up, since we must add them > ++ * together before rounding. > ++ */ > ++ > ++#define SCALEBITS 16 /* speediest right-shift on some machines */ > ++ > ++/* Use static tables for color processing. */ > ++/* Four tables, each 256 entries of 4 bytes totals 4K which is not bad... */ > ++ > ++const int Cr_r_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ > ++ -0xb3, -0xb2, -0xb1, -0xaf, -0xae, -0xac, > ++ -0xab, -0xaa, -0xa8, -0xa7, -0xa5, -0xa4, > ++ -0xa3, -0xa1, -0xa0, -0x9e, -0x9d, -0x9c, > ++ -0x9a, -0x99, -0x97, -0x96, -0x95, -0x93, > ++ -0x92, -0x90, -0x8f, -0x8e, -0x8c, -0x8b, > ++ -0x89, -0x88, -0x87, -0x85, -0x84, -0x82, > ++ -0x81, -0x80, -0x7e, -0x7d, -0x7b, -0x7a, > ++ -0x79, -0x77, -0x76, -0x74, -0x73, -0x72, > ++ -0x70, -0x6f, -0x6d, -0x6c, -0x6b, -0x69, > ++ -0x68, -0x66, -0x65, -0x64, -0x62, -0x61, > ++ -0x5f, -0x5e, -0x5d, -0x5b, -0x5a, -0x58, > ++ -0x57, -0x56, -0x54, -0x53, -0x51, -0x50, > ++ -0x4f, -0x4d, -0x4c, -0x4a, -0x49, -0x48, > ++ -0x46, -0x45, -0x43, -0x42, -0x40, -0x3f, > ++ -0x3e, -0x3c, -0x3b, -0x39, -0x38, -0x37, > ++ -0x35, -0x34, -0x32, -0x31, -0x30, -0x2e, > ++ -0x2d, -0x2b, -0x2a, -0x29, -0x27, -0x26, > ++ -0x24, -0x23, -0x22, -0x20, -0x1f, -0x1d, > ++ -0x1c, -0x1b, -0x19, -0x18, -0x16, -0x15, > ++ -0x14, -0x12, -0x11, -0x0f, -0x0e, -0x0d, > ++ -0x0b, -0x0a, -0x08, -0x07, -0x06, -0x04, > ++ -0x03, -0x01, 0x00, 0x01, 0x03, 0x04, > ++ 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x0d, > ++ 0x0e, 0x0f, 0x11, 0x12, 0x14, 0x15, > ++ 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1d, > ++ 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, > ++ 0x27, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, > ++ 0x30, 0x31, 0x32, 0x34, 0x35, 0x37, > ++ 0x38, 0x39, 0x3b, 0x3c, 0x3e, 0x3f, > ++ 0x40, 0x42, 0x43, 0x45, 0x46, 0x48, > ++ 0x49, 0x4a, 0x4c, 0x4d, 0x4f, 0x50, > ++ 0x51, 0x53, 0x54, 0x56, 0x57, 0x58, > ++ 0x5a, 0x5b, 0x5d, 0x5e, 0x5f, 0x61, > ++ 0x62, 0x64, 0x65, 0x66, 0x68, 0x69, > ++ 0x6b, 0x6c, 0x6d, 0x6f, 0x70, 0x72, > ++ 0x73, 0x74, 0x76, 0x77, 0x79, 0x7a, > ++ 0x7b, 0x7d, 0x7e, 0x80, 0x81, 0x82, > ++ 0x84, 0x85, 0x87, 0x88, 0x89, 0x8b, > ++ 0x8c, 0x8e, 0x8f, 0x90, 0x92, 0x93, > ++ 0x95, 0x96, 0x97, 0x99, 0x9a, 0x9c, > ++ 0x9d, 0x9e, 0xa0, 0xa1, 0xa3, 0xa4, > ++ 0xa5, 0xa7, 0xa8, 0xaa, 0xab, 0xac, > ++ 0xae, 0xaf, 0xb1, 0xb2, > ++ }; > ++ > ++const int Cb_b_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ > ++ -0xe3, -0xe1, -0xdf, -0xde, -0xdc, -0xda, > ++ -0xd8, -0xd6, -0xd5, -0xd3, -0xd1, -0xcf, > ++ -0xce, -0xcc, -0xca, -0xc8, -0xc6, -0xc5, > ++ -0xc3, -0xc1, -0xbf, -0xbe, -0xbc, -0xba, > ++ -0xb8, -0xb7, -0xb5, -0xb3, -0xb1, -0xaf, > ++ -0xae, -0xac, -0xaa, -0xa8, -0xa7, -0xa5, > ++ -0xa3, -0xa1, -0x9f, -0x9e, -0x9c, -0x9a, > ++ -0x98, -0x97, -0x95, -0x93, -0x91, -0x90, > ++ -0x8e, -0x8c, -0x8a, -0x88, -0x87, -0x85, > ++ -0x83, -0x81, -0x80, -0x7e, -0x7c, -0x7a, > ++ -0x78, -0x77, -0x75, -0x73, -0x71, -0x70, > ++ -0x6e, -0x6c, -0x6a, -0x69, -0x67, -0x65, > ++ -0x63, -0x61, -0x60, -0x5e, -0x5c, -0x5a, > ++ -0x59, -0x57, -0x55, -0x53, -0x52, -0x50, > ++ -0x4e, -0x4c, -0x4a, -0x49, -0x47, -0x45, > ++ -0x43, -0x42, -0x40, -0x3e, -0x3c, -0x3a, > ++ -0x39, -0x37, -0x35, -0x33, -0x32, -0x30, > ++ -0x2e, -0x2c, -0x2b, -0x29, -0x27, -0x25, > ++ -0x23, -0x22, -0x20, -0x1e, -0x1c, -0x1b, > ++ -0x19, -0x17, -0x15, -0x13, -0x12, -0x10, > ++ -0x0e, -0x0c, -0x0b, -0x09, -0x07, -0x05, > ++ -0x04, -0x02, 0x00, 0x02, 0x04, 0x05, > ++ 0x07, 0x09, 0x0b, 0x0c, 0x0e, 0x10, > ++ 0x12, 0x13, 0x15, 0x17, 0x19, 0x1b, > ++ 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x25, > ++ 0x27, 0x29, 0x2b, 0x2c, 0x2e, 0x30, > ++ 0x32, 0x33, 0x35, 0x37, 0x39, 0x3a, > ++ 0x3c, 0x3e, 0x40, 0x42, 0x43, 0x45, > ++ 0x47, 0x49, 0x4a, 0x4c, 0x4e, 0x50, > ++ 0x52, 0x53, 0x55, 0x57, 0x59, 0x5a, > ++ 0x5c, 0x5e, 0x60, 0x61, 0x63, 0x65, > ++ 0x67, 0x69, 0x6a, 0x6c, 0x6e, 0x70, > ++ 0x71, 0x73, 0x75, 0x77, 0x78, 0x7a, > ++ 0x7c, 0x7e, 0x80, 0x81, 0x83, 0x85, > ++ 0x87, 0x88, 0x8a, 0x8c, 0x8e, 0x90, > ++ 0x91, 0x93, 0x95, 0x97, 0x98, 0x9a, > ++ 0x9c, 0x9e, 0x9f, 0xa1, 0xa3, 0xa5, > ++ 0xa7, 0xa8, 0xaa, 0xac, 0xae, 0xaf, > ++ 0xb1, 0xb3, 0xb5, 0xb7, 0xb8, 0xba, > ++ 0xbc, 0xbe, 0xbf, 0xc1, 0xc3, 0xc5, > ++ 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xcf, > ++ 0xd1, 0xd3, 0xd5, 0xd6, 0xd8, 0xda, > ++ 0xdc, 0xde, 0xdf, 0xe1, > ++ }; > ++ > ++const int Cr_g_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ > ++ 0x5b6900, 0x5ab22e, 0x59fb5c, 0x59448a, 0x588db8, 0x57d6e6, > ++ 0x572014, 0x566942, 0x55b270, 0x54fb9e, 0x5444cc, 0x538dfa, > ++ 0x52d728, 0x522056, 0x516984, 0x50b2b2, 0x4ffbe0, 0x4f450e, > ++ 0x4e8e3c, 0x4dd76a, 0x4d2098, 0x4c69c6, 0x4bb2f4, 0x4afc22, > ++ 0x4a4550, 0x498e7e, 0x48d7ac, 0x4820da, 0x476a08, 0x46b336, > ++ 0x45fc64, 0x454592, 0x448ec0, 0x43d7ee, 0x43211c, 0x426a4a, > ++ 0x41b378, 0x40fca6, 0x4045d4, 0x3f8f02, 0x3ed830, 0x3e215e, > ++ 0x3d6a8c, 0x3cb3ba, 0x3bfce8, 0x3b4616, 0x3a8f44, 0x39d872, > ++ 0x3921a0, 0x386ace, 0x37b3fc, 0x36fd2a, 0x364658, 0x358f86, > ++ 0x34d8b4, 0x3421e2, 0x336b10, 0x32b43e, 0x31fd6c, 0x31469a, > ++ 0x308fc8, 0x2fd8f6, 0x2f2224, 0x2e6b52, 0x2db480, 0x2cfdae, > ++ 0x2c46dc, 0x2b900a, 0x2ad938, 0x2a2266, 0x296b94, 0x28b4c2, > ++ 0x27fdf0, 0x27471e, 0x26904c, 0x25d97a, 0x2522a8, 0x246bd6, > ++ 0x23b504, 0x22fe32, 0x224760, 0x21908e, 0x20d9bc, 0x2022ea, > ++ 0x1f6c18, 0x1eb546, 0x1dfe74, 0x1d47a2, 0x1c90d0, 0x1bd9fe, > ++ 0x1b232c, 0x1a6c5a, 0x19b588, 0x18feb6, 0x1847e4, 0x179112, > ++ 0x16da40, 0x16236e, 0x156c9c, 0x14b5ca, 0x13fef8, 0x134826, > ++ 0x129154, 0x11da82, 0x1123b0, 0x106cde, 0x0fb60c, 0x0eff3a, > ++ 0x0e4868, 0x0d9196, 0x0cdac4, 0x0c23f2, 0x0b6d20, 0x0ab64e, > ++ 0x09ff7c, 0x0948aa, 0x0891d8, 0x07db06, 0x072434, 0x066d62, > ++ 0x05b690, 0x04ffbe, 0x0448ec, 0x03921a, 0x02db48, 0x022476, > ++ 0x016da4, 0x00b6d2, 0x000000, -0x00b6d2, -0x016da4, -0x022476, > ++ -0x02db48, -0x03921a, -0x0448ec, -0x04ffbe, -0x05b690, -0x066d62, > ++ -0x072434, -0x07db06, -0x0891d8, -0x0948aa, -0x09ff7c, -0x0ab64e, > ++ -0x0b6d20, -0x0c23f2, -0x0cdac4, -0x0d9196, -0x0e4868, -0x0eff3a, > ++ -0x0fb60c, -0x106cde, -0x1123b0, -0x11da82, -0x129154, -0x134826, > ++ -0x13fef8, -0x14b5ca, -0x156c9c, -0x16236e, -0x16da40, -0x179112, > ++ -0x1847e4, -0x18feb6, -0x19b588, -0x1a6c5a, -0x1b232c, -0x1bd9fe, > ++ -0x1c90d0, -0x1d47a2, -0x1dfe74, -0x1eb546, -0x1f6c18, -0x2022ea, > ++ -0x20d9bc, -0x21908e, -0x224760, -0x22fe32, -0x23b504, -0x246bd6, > ++ -0x2522a8, -0x25d97a, -0x26904c, -0x27471e, -0x27fdf0, -0x28b4c2, > ++ -0x296b94, -0x2a2266, -0x2ad938, -0x2b900a, -0x2c46dc, -0x2cfdae, > ++ -0x2db480, -0x2e6b52, -0x2f2224, -0x2fd8f6, -0x308fc8, -0x31469a, > ++ -0x31fd6c, -0x32b43e, -0x336b10, -0x3421e2, -0x34d8b4, -0x358f86, > ++ -0x364658, -0x36fd2a, -0x37b3fc, -0x386ace, -0x3921a0, -0x39d872, > ++ -0x3a8f44, -0x3b4616, -0x3bfce8, -0x3cb3ba, -0x3d6a8c, -0x3e215e, > ++ -0x3ed830, -0x3f8f02, -0x4045d4, -0x40fca6, -0x41b378, -0x426a4a, > ++ -0x43211c, -0x43d7ee, -0x448ec0, -0x454592, -0x45fc64, -0x46b336, > ++ -0x476a08, -0x4820da, -0x48d7ac, -0x498e7e, -0x4a4550, -0x4afc22, > ++ -0x4bb2f4, -0x4c69c6, -0x4d2098, -0x4dd76a, -0x4e8e3c, -0x4f450e, > ++ -0x4ffbe0, -0x50b2b2, -0x516984, -0x522056, -0x52d728, -0x538dfa, > ++ -0x5444cc, -0x54fb9e, -0x55b270, -0x566942, -0x572014, -0x57d6e6, > ++ -0x588db8, -0x59448a, -0x59fb5c, -0x5ab22e, > ++ }; > ++ > ++const int Cb_g_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ > ++ 0x2c8d00, 0x2c34e6, 0x2bdccc, 0x2b84b2, 0x2b2c98, 0x2ad47e, > ++ 0x2a7c64, 0x2a244a, 0x29cc30, 0x297416, 0x291bfc, 0x28c3e2, > ++ 0x286bc8, 0x2813ae, 0x27bb94, 0x27637a, 0x270b60, 0x26b346, > ++ 0x265b2c, 0x260312, 0x25aaf8, 0x2552de, 0x24fac4, 0x24a2aa, > ++ 0x244a90, 0x23f276, 0x239a5c, 0x234242, 0x22ea28, 0x22920e, > ++ 0x2239f4, 0x21e1da, 0x2189c0, 0x2131a6, 0x20d98c, 0x208172, > ++ 0x202958, 0x1fd13e, 0x1f7924, 0x1f210a, 0x1ec8f0, 0x1e70d6, > ++ 0x1e18bc, 0x1dc0a2, 0x1d6888, 0x1d106e, 0x1cb854, 0x1c603a, > ++ 0x1c0820, 0x1bb006, 0x1b57ec, 0x1affd2, 0x1aa7b8, 0x1a4f9e, > ++ 0x19f784, 0x199f6a, 0x194750, 0x18ef36, 0x18971c, 0x183f02, > ++ 0x17e6e8, 0x178ece, 0x1736b4, 0x16de9a, 0x168680, 0x162e66, > ++ 0x15d64c, 0x157e32, 0x152618, 0x14cdfe, 0x1475e4, 0x141dca, > ++ 0x13c5b0, 0x136d96, 0x13157c, 0x12bd62, 0x126548, 0x120d2e, > ++ 0x11b514, 0x115cfa, 0x1104e0, 0x10acc6, 0x1054ac, 0x0ffc92, > ++ 0x0fa478, 0x0f4c5e, 0x0ef444, 0x0e9c2a, 0x0e4410, 0x0debf6, > ++ 0x0d93dc, 0x0d3bc2, 0x0ce3a8, 0x0c8b8e, 0x0c3374, 0x0bdb5a, > ++ 0x0b8340, 0x0b2b26, 0x0ad30c, 0x0a7af2, 0x0a22d8, 0x09cabe, > ++ 0x0972a4, 0x091a8a, 0x08c270, 0x086a56, 0x08123c, 0x07ba22, > ++ 0x076208, 0x0709ee, 0x06b1d4, 0x0659ba, 0x0601a0, 0x05a986, > ++ 0x05516c, 0x04f952, 0x04a138, 0x04491e, 0x03f104, 0x0398ea, > ++ 0x0340d0, 0x02e8b6, 0x02909c, 0x023882, 0x01e068, 0x01884e, > ++ 0x013034, 0x00d81a, 0x008000, 0x0027e6, -0x003034, -0x00884e, > ++ -0x00e068, -0x013882, -0x01909c, -0x01e8b6, -0x0240d0, -0x0298ea, > ++ -0x02f104, -0x03491e, -0x03a138, -0x03f952, -0x04516c, -0x04a986, > ++ -0x0501a0, -0x0559ba, -0x05b1d4, -0x0609ee, -0x066208, -0x06ba22, > ++ -0x07123c, -0x076a56, -0x07c270, -0x081a8a, -0x0872a4, -0x08cabe, > ++ -0x0922d8, -0x097af2, -0x09d30c, -0x0a2b26, -0x0a8340, -0x0adb5a, > ++ -0x0b3374, -0x0b8b8e, -0x0be3a8, -0x0c3bc2, -0x0c93dc, -0x0cebf6, > ++ -0x0d4410, -0x0d9c2a, -0x0df444, -0x0e4c5e, -0x0ea478, -0x0efc92, > ++ -0x0f54ac, -0x0facc6, -0x1004e0, -0x105cfa, -0x10b514, -0x110d2e, > ++ -0x116548, -0x11bd62, -0x12157c, -0x126d96, -0x12c5b0, -0x131dca, > ++ -0x1375e4, -0x13cdfe, -0x142618, -0x147e32, -0x14d64c, -0x152e66, > ++ -0x158680, -0x15de9a, -0x1636b4, -0x168ece, -0x16e6e8, -0x173f02, > ++ -0x17971c, -0x17ef36, -0x184750, -0x189f6a, -0x18f784, -0x194f9e, > ++ -0x19a7b8, -0x19ffd2, -0x1a57ec, -0x1ab006, -0x1b0820, -0x1b603a, > ++ -0x1bb854, -0x1c106e, -0x1c6888, -0x1cc0a2, -0x1d18bc, -0x1d70d6, > ++ -0x1dc8f0, -0x1e210a, -0x1e7924, -0x1ed13e, -0x1f2958, -0x1f8172, > ++ -0x1fd98c, -0x2031a6, -0x2089c0, -0x20e1da, -0x2139f4, -0x21920e, > ++ -0x21ea28, -0x224242, -0x229a5c, -0x22f276, -0x234a90, -0x23a2aa, > ++ -0x23fac4, -0x2452de, -0x24aaf8, -0x250312, -0x255b2c, -0x25b346, > ++ -0x260b60, -0x26637a, -0x26bb94, -0x2713ae, -0x276bc8, -0x27c3e2, > ++ -0x281bfc, -0x287416, -0x28cc30, -0x29244a, -0x297c64, -0x29d47e, > ++ -0x2a2c98, -0x2a84b2, -0x2adccc, -0x2b34e6, > ++ }; > ++ > ++ > ++/* We assume that right shift corresponds to signed division by 2 with > ++ * rounding towards minus infinity. This is correct for typical "arithmetic > ++ * shift" instructions that shift in copies of the sign bit. But some > ++ * C compilers implement >> with an unsigned shift. For these machines you > ++ * must define RIGHT_SHIFT_IS_UNSIGNED. > ++ * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity. > ++ * It is only applied with constant shift counts. SHIFT_TEMPS must be > ++ * included in the variables of any routine using RIGHT_SHIFT. > ++ */ > ++ > ++#ifdef RIGHT_SHIFT_IS_UNSIGNED > ++#define SHIFT_TEMPS INT32 shift_temp; > ++#define RIGHT_SHIFT(x,shft) \ > ++ ((shift_temp = (x)) < 0 ? \ > ++ (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \ > ++ (shift_temp >> (shft))) > ++#else > ++#define SHIFT_TEMPS > ++#define RIGHT_SHIFT(x,shft) ((x) >> (shft)) > ++#endif > ++ > ++ > ++METHODDEF(void) > ++ycc_rgb_convert_argb (j_decompress_ptr cinfo, > ++ JSAMPIMAGE input_buf, JDIMENSION input_row, > ++ JSAMPARRAY output_buf, int num_rows) > ++{ > ++ JDIMENSION num_cols = cinfo->output_width; > ++ JSAMPLE * range_limit = cinfo->sample_range_limit; > ++ > ++ SHIFT_TEMPS > ++ > ++ /* This is used if we don't have SSE2 */ > ++ > ++ while (--num_rows >= 0) { > ++ JSAMPROW inptr0 = input_buf[0][input_row]; > ++ JSAMPROW inptr1 = input_buf[1][input_row]; > ++ JSAMPROW inptr2 = input_buf[2][input_row]; > ++ input_row++; > ++ uint32_t *outptr = (uint32_t *) *output_buf++; > ++ for (JDIMENSION col = 0; col < num_cols; col++) { > ++ int y = GETJSAMPLE(inptr0[col]); > ++ int cb = GETJSAMPLE(inptr1[col]); > ++ int cr = GETJSAMPLE(inptr2[col]); > ++ JSAMPLE * range_limit_y = range_limit + y; > ++ /* Range-limiting is essential due to noise introduced by DCT losses. */ > ++ outptr[col] = 0xFF000000 | > ++ ( range_limit_y[Cr_r_tab[cr]] << 16 ) | > ++ ( range_limit_y[((int) RIGHT_SHIFT(Cb_g_tab[cb] + Cr_g_tab[cr], SCALEBITS))] << 8 ) | > ++ ( range_limit_y[Cb_b_tab[cb]] ); > ++ } > ++ } > ++} > ++#endif > ++ > ++ > + /**************** Inverted CMYK -> RGB conversion **************/ > + /* > + * Input is (Inverted) CMYK stored as 4 bytes per pixel. > > Added: trunk/www/firefox/files/patch-bug791305 > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ trunk/www/firefox/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) > @@ -0,0 +1,107 @@ > +commit c269a16 > +Author: Jeff Muizelaar > +Date: Fri Sep 14 15:54:55 2012 -0400 > + > + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey > + > + libjpeg-turbo supports converting directly to a format compatible with cairo's > + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives > + us SSE2 and NEON version of this function. > + > + --HG-- > + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 > +--- > + configure.in | 6 +- > + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- > + 2 files changed, 20 insertions(+), 297 deletions(-) > + > +diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp > +index c1fb515..1d2a259 100644 > +--- image/decoders/nsJPEGDecoder.cpp > ++++ image/decoders/nsJPEGDecoder.cpp > +@@ -22,6 +22,13 @@ > + extern "C" { > + #include "iccjpeg.h" > + > ++#ifdef JCS_EXTENSIONS > ++#if defined(IS_BIG_ENDIAN) > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB > ++#else > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX > ++#endif > ++#else > + /* Colorspace conversion (copied from jpegint.h) */ > + struct jpeg_color_deconverter { > + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); > +@@ -34,6 +41,7 @@ METHODDEF(void) > + ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + JSAMPIMAGE input_buf, JDIMENSION input_row, > + JSAMPARRAY output_buf, int num_rows); > ++#endif > + } > + > + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); > +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + case JCS_GRAYSCALE: > + case JCS_RGB: > + case JCS_YCbCr: > ++#ifdef JCS_EXTENSIONS > ++ // if we're not color managing we can decode directly to > ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB > ++ if (mCMSMode != eCMSMode_All) { > ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; > ++ mInfo.out_color_components = 4; > ++ } else { > ++ mInfo.out_color_space = JCS_RGB; > ++ } > ++#else > + mInfo.out_color_space = JCS_RGB; > ++#endif > + break; > + case JCS_CMYK: > + case JCS_YCCK: > +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + return; /* I/O suspension */ > + } > + > ++#ifndef JCS_EXTENSIONS > + /* Force to use our YCbCr to Packed RGB converter when possible */ > + if (!mTransform && (mCMSMode != eCMSMode_All) && > + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { > +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ > + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; > + } > ++#endif > + > + /* If this is a progressive JPEG ... */ > + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; > +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) > + PRUint32 *imageRow = ((PRUint32*)mImageData) + > + (mInfo.output_scanline * mInfo.output_width); > + > ++#ifdef JCS_EXTENSIONS > ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { > ++#else > + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { > ++#endif > + /* Special case: scanline will be directly converted into packed ARGB */ > + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { > + *suspend = true; /* suspend */ > +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) > + } // namespace mozilla > + > + > ++#ifndef JCS_EXTENSIONS > + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ > + > + /* > +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + } > + } > + } > ++#endif > + > + > + /**************** Inverted CMYK -> RGB conversion **************/ > + /* > > Added: trunk/www/libxul/files/patch-bug791305 > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ trunk/www/libxul/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) > @@ -0,0 +1,107 @@ > +commit c269a16 > +Author: Jeff Muizelaar > +Date: Fri Sep 14 15:54:55 2012 -0400 > + > + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey > + > + libjpeg-turbo supports converting directly to a format compatible with cairo's > + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives > + us SSE2 and NEON version of this function. > + > + --HG-- > + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 > +--- > + configure.in | 6 +- > + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- > + 2 files changed, 20 insertions(+), 297 deletions(-) > + > +diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp > +index c1fb515..1d2a259 100644 > +--- image/decoders/nsJPEGDecoder.cpp > ++++ image/decoders/nsJPEGDecoder.cpp > +@@ -22,6 +22,13 @@ > + extern "C" { > + #include "iccjpeg.h" > + > ++#ifdef JCS_EXTENSIONS > ++#if defined(IS_BIG_ENDIAN) > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB > ++#else > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX > ++#endif > ++#else > + /* Colorspace conversion (copied from jpegint.h) */ > + struct jpeg_color_deconverter { > + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); > +@@ -34,6 +41,7 @@ METHODDEF(void) > + ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + JSAMPIMAGE input_buf, JDIMENSION input_row, > + JSAMPARRAY output_buf, int num_rows); > ++#endif > + } > + > + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); > +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + case JCS_GRAYSCALE: > + case JCS_RGB: > + case JCS_YCbCr: > ++#ifdef JCS_EXTENSIONS > ++ // if we're not color managing we can decode directly to > ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB > ++ if (mCMSMode != eCMSMode_All) { > ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; > ++ mInfo.out_color_components = 4; > ++ } else { > ++ mInfo.out_color_space = JCS_RGB; > ++ } > ++#else > + mInfo.out_color_space = JCS_RGB; > ++#endif > + break; > + case JCS_CMYK: > + case JCS_YCCK: > +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + return; /* I/O suspension */ > + } > + > ++#ifndef JCS_EXTENSIONS > + /* Force to use our YCbCr to Packed RGB converter when possible */ > + if (!mTransform && (mCMSMode != eCMSMode_All) && > + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { > +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ > + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; > + } > ++#endif > + > + /* If this is a progressive JPEG ... */ > + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; > +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) > + PRUint32 *imageRow = ((PRUint32*)mImageData) + > + (mInfo.output_scanline * mInfo.output_width); > + > ++#ifdef JCS_EXTENSIONS > ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { > ++#else > + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { > ++#endif > + /* Special case: scanline will be directly converted into packed ARGB */ > + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { > + *suspend = true; /* suspend */ > +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) > + } // namespace mozilla > + > + > ++#ifndef JCS_EXTENSIONS > + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ > + > + /* > +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + } > + } > + } > ++#endif > + > + > + /**************** Inverted CMYK -> RGB conversion **************/ > + /* > > Added: trunk/www/seamonkey/files/patch-bug791305 > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ trunk/www/seamonkey/files/patch-bug791305 Sat Sep 22 21:54:07 2012 (r1029) > @@ -0,0 +1,107 @@ > +commit c269a16 > +Author: Jeff Muizelaar > +Date: Fri Sep 14 15:54:55 2012 -0400 > + > + Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey > + > + libjpeg-turbo supports converting directly to a format compatible with cairo's > + FORMAT_RGB24. Use that instead of our own handcoded function. This also gives > + us SSE2 and NEON version of this function. > + > + --HG-- > + extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 > +--- > + configure.in | 6 +- > + image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- > + 2 files changed, 20 insertions(+), 297 deletions(-) > + > +diff --git mozilla/image/decoders/nsJPEGDecoder.cpp mozilla/image/decoders/nsJPEGDecoder.cpp > +index c1fb515..1d2a259 100644 > +--- mozilla/image/decoders/nsJPEGDecoder.cpp > ++++ mozilla/image/decoders/nsJPEGDecoder.cpp > +@@ -22,6 +22,13 @@ > + extern "C" { > + #include "iccjpeg.h" > + > ++#ifdef JCS_EXTENSIONS > ++#if defined(IS_BIG_ENDIAN) > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB > ++#else > ++#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX > ++#endif > ++#else > + /* Colorspace conversion (copied from jpegint.h) */ > + struct jpeg_color_deconverter { > + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); > +@@ -34,6 +41,7 @@ METHODDEF(void) > + ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + JSAMPIMAGE input_buf, JDIMENSION input_row, > + JSAMPARRAY output_buf, int num_rows); > ++#endif > + } > + > + static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); > +@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + case JCS_GRAYSCALE: > + case JCS_RGB: > + case JCS_YCbCr: > ++#ifdef JCS_EXTENSIONS > ++ // if we're not color managing we can decode directly to > ++ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB > ++ if (mCMSMode != eCMSMode_All) { > ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; > ++ mInfo.out_color_components = 4; > ++ } else { > ++ mInfo.out_color_space = JCS_RGB; > ++ } > ++#else > + mInfo.out_color_space = JCS_RGB; > ++#endif > + break; > + case JCS_CMYK: > + case JCS_YCCK: > +@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + return; /* I/O suspension */ > + } > + > ++#ifndef JCS_EXTENSIONS > + /* Force to use our YCbCr to Packed RGB converter when possible */ > + if (!mTransform && (mCMSMode != eCMSMode_All) && > + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { > +@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) > + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ > + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; > + } > ++#endif > + > + /* If this is a progressive JPEG ... */ > + mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; > +@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) > + PRUint32 *imageRow = ((PRUint32*)mImageData) + > + (mInfo.output_scanline * mInfo.output_width); > + > ++#ifdef JCS_EXTENSIONS > ++ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { > ++#else > + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { > ++#endif > + /* Special case: scanline will be directly converted into packed ARGB */ > + if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { > + *suspend = true; /* suspend */ > +@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) > + } // namespace mozilla > + > + > ++#ifndef JCS_EXTENSIONS > + /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ > + > + /* > +@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, > + } > + } > + } > ++#endif > + > + > + /**************** Inverted CMYK -> RGB conversion **************/ > + /* > _______________________________________________ > freebsd-gecko@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-gecko > To unsubscribe, send any mail to "freebsd-gecko-unsubscribe@freebsd.org" >