pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Import firefox-49.0.2 as wip/firefox-webrtc.
Module Name: pkgsrc-wip
Committed By: Kamil Rytarowski <n54%gmx.com@localhost>
Pushed By: kamil
Date: Sun Oct 30 02:46:57 2016 +0200
Changeset: 8a7aeb5376d3089b9a00206db5e8a4d793c90f08
Added Files:
firefox-webrtc/DESCR
firefox-webrtc/Makefile
firefox-webrtc/PLIST
firefox-webrtc/distinfo
firefox-webrtc/files/desktop.in
firefox-webrtc/hacks.mk
firefox-webrtc/mozilla-common.mk
firefox-webrtc/options.mk
firefox-webrtc/patches/patch-aa
firefox-webrtc/patches/patch-ao
firefox-webrtc/patches/patch-as
firefox-webrtc/patches/patch-bf
firefox-webrtc/patches/patch-browser_installer_package-manifest.in
firefox-webrtc/patches/patch-build_autoconf_compiler-opts.m4
firefox-webrtc/patches/patch-build_gyp.mozbuild
firefox-webrtc/patches/patch-build_moz.configure_old.configure
firefox-webrtc/patches/patch-config_Makefile.in
firefox-webrtc/patches/patch-config_baseconfig.mk
firefox-webrtc/patches/patch-config_external_moz.build
firefox-webrtc/patches/patch-config_stl__wrappers_ios
firefox-webrtc/patches/patch-config_stl__wrappers_ostream
firefox-webrtc/patches/patch-config_system-headers
firefox-webrtc/patches/patch-config_system__wrappers_unwind.h
firefox-webrtc/patches/patch-dom_media_moz.build
firefox-webrtc/patches/patch-dom_plugins_ipc_PluginModuleChild.cpp
firefox-webrtc/patches/patch-dom_plugins_ipc_PluginModuleChild.h
firefox-webrtc/patches/patch-extensions_spellcheck_hunspell_glue_mozHunspell.cpp
firefox-webrtc/patches/patch-gfx_cairo_libpixman_src_pixman-arm-neon-asm.S
firefox-webrtc/patches/patch-gfx_gl_GLContextProviderGLX.cpp
firefox-webrtc/patches/patch-gfx_graphite2_src_Bidi.cpp
firefox-webrtc/patches/patch-gfx_skia_skia_src_core_SkUtilsArm.cpp
firefox-webrtc/patches/patch-gfx_ycbcr_moz.build
firefox-webrtc/patches/patch-gfx_ycbcr_yuv__row__arm.S
firefox-webrtc/patches/patch-image_decoders_nsJPEGDecoder.cpp
firefox-webrtc/patches/patch-intl_hyphenation_glue_hnjalloc.h
firefox-webrtc/patches/patch-ipc_chromium_src_base_atomicops.h
firefox-webrtc/patches/patch-ipc_chromium_src_base_message__pump__libevent.cc
firefox-webrtc/patches/patch-ipc_chromium_src_base_platform__thread.h
firefox-webrtc/patches/patch-ipc_chromium_src_base_platform__thread__posix.cc
firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util.h
firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util__bsd.cc
firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util__posix.cc
firefox-webrtc/patches/patch-ipc_chromium_src_base_sys__info__posix.cc
firefox-webrtc/patches/patch-ipc_chromium_src_base_time__posix.cc
firefox-webrtc/patches/patch-ipc_chromium_src_build_build__config.h
firefox-webrtc/patches/patch-ipc_chromium_src_chrome_common_transport__dib.h
firefox-webrtc/patches/patch-ipc_glue_GeckoChildProcessHost.cpp
firefox-webrtc/patches/patch-js__src__vm__SPSProfiler.cpp
firefox-webrtc/patches/patch-js_src_jit-LIR.cpp
firefox-webrtc/patches/patch-js_src_jit_MIR.cpp
firefox-webrtc/patches/patch-js_src_jit_arm_Architecture-arm.cpp
firefox-webrtc/patches/patch-js_src_jit_none_AtomicOperations-sparc.h
firefox-webrtc/patches/patch-js_src_jsdate.cpp
firefox-webrtc/patches/patch-js_src_jskwgen.cpp
firefox-webrtc/patches/patch-js_xpconnect_src_XPCConvert.cpp
firefox-webrtc/patches/patch-js_xpconnect_src_xpcprivate.h
firefox-webrtc/patches/patch-media_libcubeb_src_cubeb.c
firefox-webrtc/patches/patch-media_libcubeb_src_cubeb__alsa.c
firefox-webrtc/patches/patch-media_libcubeb_src_cubeb__oss.c
firefox-webrtc/patches/patch-media_libcubeb_src_moz.build
firefox-webrtc/patches/patch-media_libsoundtouch_src_cpu__detect__x86.cpp
firefox-webrtc/patches/patch-media_libstagefright_frameworks_av_include_media_stagefright_foundation_AString.h
firefox-webrtc/patches/patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp
firefox-webrtc/patches/patch-media_libstagefright_system_core_liblog_fake__log__device.c
firefox-webrtc/patches/patch-media_libstagefright_system_core_liblog_logprint.c
firefox-webrtc/patches/patch-media_libtheora_lib_arm_armcpu.c
firefox-webrtc/patches/patch-media_libtheora_lib_info.c
firefox-webrtc/patches/patch-media_libtheora_moz.build
firefox-webrtc/patches/patch-media_libtremor_Makefile.in
firefox-webrtc/patches/patch-media_libtremor_moz.build
firefox-webrtc/patches/patch-media_libvorbis_Makefile.in
firefox-webrtc/patches/patch-media_libvorbis_lib_vorbis_info.c
firefox-webrtc/patches/patch-media_libvorbis_moz.build
firefox-webrtc/patches/patch-media_libyuv_include_libyuv_scale__row.h
firefox-webrtc/patches/patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h
firefox-webrtc/patches/patch-media_openmax__dl_dl_api_armCOMM__s.h
firefox-webrtc/patches/patch-memory_build_mozjemalloc__compat.c
firefox-webrtc/patches/patch-memory_mozalloc_mozalloc__abort.cpp
firefox-webrtc/patches/patch-mfbt_Attributes.h
firefox-webrtc/patches/patch-mfbt_Poison.cpp
firefox-webrtc/patches/patch-modules_libjar_nsZipArchive.cpp
firefox-webrtc/patches/patch-modules_libpref_init_all.js
firefox-webrtc/patches/patch-mozglue_build_arm.cpp
firefox-webrtc/patches/patch-mozglue_build_arm.h
firefox-webrtc/patches/patch-python_mozbuild_mozbuild_configure_options.py
firefox-webrtc/patches/patch-rc
firefox-webrtc/patches/patch-toolkit_components_protobuf_src_google_protobuf_stubs_atomicops.h
firefox-webrtc/patches/patch-toolkit_components_protobuf_src_google_protobuf_stubs_platform__macros.h
firefox-webrtc/patches/patch-toolkit_components_terminator_nsTerminator.cpp
firefox-webrtc/patches/patch-toolkit_library_libxul.mk
firefox-webrtc/patches/patch-toolkit_library_moz.build
firefox-webrtc/patches/patch-toolkit_modules_GMPUtils.jsm
firefox-webrtc/patches/patch-toolkit_moz.configure
firefox-webrtc/patches/patch-toolkit_mozapps_extensions_test_browser_browser__gmpProvider.js
firefox-webrtc/patches/patch-toolkit_xre_glxtest.cpp
firefox-webrtc/patches/patch-toolkit_xre_nsEmbedFunctions.cpp
firefox-webrtc/patches/patch-xpcom_base_nscore.h
firefox-webrtc/patches/patch-xpcom_components_Module.h
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_Makefile.in
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp
firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp
firefox-webrtc/xpi.mk
Log Message:
Import firefox-49.0.2 as wip/firefox-webrtc.
Mozilla Firefox is a free, open-source and cross-platform web browser
for Windows, Linux, MacOS X and many other operating systems.
It is fast and easy to use, and offers many advantages over other web
browsers, such as tabbed browsing and the ability to block pop-up
windows.
Firefox also offers excellent bookmark and history management, and it
can be extended by developers using industry standards such as XML,
CSS, JavaScript, C++, etc. Many extensions are available.
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=8a7aeb5376d3089b9a00206db5e8a4d793c90f08
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
firefox-webrtc/DESCR | 10 +
firefox-webrtc/Makefile | 89 +
firefox-webrtc/PLIST | 4113 ++++++++++++++++++++
firefox-webrtc/distinfo | 110 +
firefox-webrtc/files/desktop.in | 191 +
firefox-webrtc/hacks.mk | 13 +
firefox-webrtc/mozilla-common.mk | 209 +
firefox-webrtc/options.mk | 103 +
firefox-webrtc/patches/patch-aa | 280 ++
firefox-webrtc/patches/patch-ao | 15 +
firefox-webrtc/patches/patch-as | 34 +
firefox-webrtc/patches/patch-bf | 15 +
.../patch-browser_installer_package-manifest.in | 24 +
.../patches/patch-build_autoconf_compiler-opts.m4 | 22 +
firefox-webrtc/patches/patch-build_gyp.mozbuild | 24 +
.../patch-build_moz.configure_old.configure | 49 +
firefox-webrtc/patches/patch-config_Makefile.in | 21 +
firefox-webrtc/patches/patch-config_baseconfig.mk | 21 +
.../patches/patch-config_external_moz.build | 38 +
.../patches/patch-config_stl__wrappers_ios | 8 +
.../patches/patch-config_stl__wrappers_ostream | 8 +
firefox-webrtc/patches/patch-config_system-headers | 86 +
.../patches/patch-config_system__wrappers_unwind.h | 9 +
firefox-webrtc/patches/patch-dom_media_moz.build | 34 +
.../patch-dom_plugins_ipc_PluginModuleChild.cpp | 33 +
.../patch-dom_plugins_ipc_PluginModuleChild.h | 15 +
...nsions_spellcheck_hunspell_glue_mozHunspell.cpp | 21 +
...h-gfx_cairo_libpixman_src_pixman-arm-neon-asm.S | 39 +
.../patches/patch-gfx_gl_GLContextProviderGLX.cpp | 16 +
.../patches/patch-gfx_graphite2_src_Bidi.cpp | 18 +
.../patch-gfx_skia_skia_src_core_SkUtilsArm.cpp | 29 +
firefox-webrtc/patches/patch-gfx_ycbcr_moz.build | 15 +
.../patches/patch-gfx_ycbcr_yuv__row__arm.S | 319 ++
.../patches/patch-image_decoders_nsJPEGDecoder.cpp | 366 ++
.../patches/patch-intl_hyphenation_glue_hnjalloc.h | 16 +
.../patch-ipc_chromium_src_base_atomicops.h | 15 +
...pc_chromium_src_base_message__pump__libevent.cc | 22 +
.../patch-ipc_chromium_src_base_platform__thread.h | 16 +
...pc_chromium_src_base_platform__thread__posix.cc | 27 +
.../patch-ipc_chromium_src_base_process__util.h | 14 +
...tch-ipc_chromium_src_base_process__util__bsd.cc | 15 +
...h-ipc_chromium_src_base_process__util__posix.cc | 24 +
...patch-ipc_chromium_src_base_sys__info__posix.cc | 18 +
.../patch-ipc_chromium_src_base_time__posix.cc | 17 +
.../patch-ipc_chromium_src_build_build__config.h | 24 +
...ipc_chromium_src_chrome_common_transport__dib.h | 15 +
.../patch-ipc_glue_GeckoChildProcessHost.cpp | 48 +
.../patches/patch-js__src__vm__SPSProfiler.cpp | 16 +
firefox-webrtc/patches/patch-js_src_jit-LIR.cpp | 15 +
firefox-webrtc/patches/patch-js_src_jit_MIR.cpp | 15 +
.../patch-js_src_jit_arm_Architecture-arm.cpp | 15 +
.../patch-js_src_jit_none_AtomicOperations-sparc.h | 261 ++
firefox-webrtc/patches/patch-js_src_jsdate.cpp | 17 +
firefox-webrtc/patches/patch-js_src_jskwgen.cpp | 13 +
.../patches/patch-js_xpconnect_src_XPCConvert.cpp | 16 +
.../patches/patch-js_xpconnect_src_xpcprivate.h | 17 +
.../patches/patch-media_libcubeb_src_cubeb.c | 26 +
.../patches/patch-media_libcubeb_src_cubeb__alsa.c | 677 ++++
.../patches/patch-media_libcubeb_src_cubeb__oss.c | 419 ++
.../patches/patch-media_libcubeb_src_moz.build | 38 +
...ch-media_libsoundtouch_src_cpu__detect__x86.cpp | 15 +
..._include_media_stagefright_foundation_AString.h | 12 +
..._av_media_libstagefright_foundation_AString.cpp | 17 +
...gefright_system_core_liblog_fake__log__device.c | 29 +
...ia_libstagefright_system_core_liblog_logprint.c | 24 +
.../patches/patch-media_libtheora_lib_arm_armcpu.c | 25 +
.../patches/patch-media_libtheora_lib_info.c | 15 +
.../patches/patch-media_libtheora_moz.build | 16 +
.../patches/patch-media_libtremor_Makefile.in | 14 +
.../patches/patch-media_libtremor_moz.build | 12 +
.../patches/patch-media_libvorbis_Makefile.in | 14 +
.../patch-media_libvorbis_lib_vorbis_info.c | 15 +
.../patches/patch-media_libvorbis_moz.build | 13 +
.../patch-media_libyuv_include_libyuv_scale__row.h | 17 +
...y_nrappkit_src_port_generic_include_sys_queue.h | 19 +
.../patch-media_openmax__dl_dl_api_armCOMM__s.h | 39 +
.../patch-memory_build_mozjemalloc__compat.c | 53 +
.../patch-memory_mozalloc_mozalloc__abort.cpp | 18 +
firefox-webrtc/patches/patch-mfbt_Attributes.h | 22 +
firefox-webrtc/patches/patch-mfbt_Poison.cpp | 20 +
.../patches/patch-modules_libjar_nsZipArchive.cpp | 17 +
.../patches/patch-modules_libpref_init_all.js | 15 +
firefox-webrtc/patches/patch-mozglue_build_arm.cpp | 59 +
firefox-webrtc/patches/patch-mozglue_build_arm.h | 15 +
...h-python_mozbuild_mozbuild_configure_options.py | 26 +
firefox-webrtc/patches/patch-rc | 18 +
..._protobuf_src_google_protobuf_stubs_atomicops.h | 24 +
...uf_src_google_protobuf_stubs_platform__macros.h | 15 +
...-toolkit_components_terminator_nsTerminator.cpp | 27 +
.../patches/patch-toolkit_library_libxul.mk | 16 +
.../patches/patch-toolkit_library_moz.build | 55 +
.../patches/patch-toolkit_modules_GMPUtils.jsm | 14 +
firefox-webrtc/patches/patch-toolkit_moz.configure | 15 +
...extensions_test_browser_browser__gmpProvider.js | 14 +
.../patches/patch-toolkit_xre_glxtest.cpp | 16 +
.../patches/patch-toolkit_xre_nsEmbedFunctions.cpp | 24 +
firefox-webrtc/patches/patch-xpcom_base_nscore.h | 15 +
.../patches/patch-xpcom_components_Module.h | 16 +
...patch-xpcom_reflect_xptcall_md_unix_Makefile.in | 50 +
.../patch-xpcom_reflect_xptcall_md_unix_moz.build | 13 +
...ect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp | 527 +++
...reflect_xptcall_md_unix_xptcinvoke__asm__mips.S | 52 +
..._xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s | 25 +
..._xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp | 13 +
...ct_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp | 75 +
...ect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp | 47 +
...xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp | 89 +
...lect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp | 217 ++
..._reflect_xptcall_md_unix_xptcstubs__asm__mips.S | 52 +
...tcall_md_unix_xptcstubs__asm__sparc64__netbsd.s | 71 +
...t_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp | 13 +
...ect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp | 41 +
firefox-webrtc/xpi.mk | 25 +
113 files changed, 10333 insertions(+)
diffs:
diff --git a/firefox-webrtc/DESCR b/firefox-webrtc/DESCR
new file mode 100644
index 0000000..1685779
--- /dev/null
+++ b/firefox-webrtc/DESCR
@@ -0,0 +1,10 @@
+Mozilla Firefox is a free, open-source and cross-platform web browser
+for Windows, Linux, MacOS X and many other operating systems.
+
+It is fast and easy to use, and offers many advantages over other web
+browsers, such as tabbed browsing and the ability to block pop-up
+windows.
+
+Firefox also offers excellent bookmark and history management, and it
+can be extended by developers using industry standards such as XML,
+CSS, JavaScript, C++, etc. Many extensions are available.
diff --git a/firefox-webrtc/Makefile b/firefox-webrtc/Makefile
new file mode 100644
index 0000000..b15431e
--- /dev/null
+++ b/firefox-webrtc/Makefile
@@ -0,0 +1,89 @@
+# $NetBSD: Makefile,v 1.268 2016/10/26 20:23:27 ryoon Exp $
+
+FIREFOX_VER= ${MOZ_BRANCH}${MOZ_BRANCH_MINOR}
+MOZ_BRANCH= 49.0
+MOZ_BRANCH_MINOR= .2
+
+DISTNAME= firefox-${FIREFOX_VER}.source
+PKGNAME= firefox-${MOZ_BRANCH}${MOZ_BRANCH_MINOR:S/b/beta/:S/esr//}
+CATEGORIES= www
+MASTER_SITES+= ${MASTER_SITE_MOZILLA:=firefox/releases/${FIREFOX_VER}/source/}
+MASTER_SITES+= ${MASTER_SITE_MOZILLA_ALL:=firefox/releases/${FIREFOX_VER}/source/}
+EXTRACT_SUFX= .tar.xz
+
+WRKSRC= ${WRKDIR}/${DISTNAME:S/.source//}
+
+MAINTAINER= ryoon%NetBSD.org@localhost
+HOMEPAGE= http://www.mozilla.com/en-US/firefox/
+COMMENT= Web browser with support for extensions (version ${MOZ_BRANCH:C/\..*//})
+LICENSE= mpl-1.1
+
+MOZILLA_DIR= # empty
+
+# Note: when updating remember to conditionalise about-background.png in PLIST
+CONFIGURE_ARGS+= --enable-application=browser
+
+# workround for link of libxul.so etc.
+LDFLAGS+= ${COMPILER_RPATH_FLAG}${PREFIX}/lib/firefox ${COMPILER_RPATH_FLAG}${PREFIX}/lib
+LDFLAGS.SunOS+= -lm
+
+NOT_PAX_MPROTECT_SAFE+= lib/firefox/firefox
+NOT_PAX_MPROTECT_SAFE+= lib/firefox/firefox-bin
+NOT_PAX_MPROTECT_SAFE+= lib/firefox/plugin-container
+
+ALL_ENV+= MOZILLA_PKG_NAME=firefox
+
+# Avoid ld "invalid section index" errors.
+BUILDLINK_TRANSFORM.SunOS+= rm:-fdata-sections
+BUILDLINK_TRANSFORM.SunOS+= rm:-ffunction-sections
+
+LDFLAGS.DragonFly= -lplc4 -lnspr4
+LDFLAGS.FreeBSD= -lplc4 -lnspr4
+LDFLAGS.Linux= -lnspr4
+
+.include "mozilla-common.mk"
+.include "options.mk"
+
+CHECK_INTERPRETER_SKIP+=lib/firefox-sdk/sdk/bin/header.py
+CHECK_INTERPRETER_SKIP+=lib/firefox-sdk/sdk/bin/typelib.py
+CHECK_INTERPRETER_SKIP+=lib/firefox-sdk/sdk/bin/xpidl.py
+CHECK_INTERPRETER_SKIP+=lib/firefox-sdk/sdk/bin/xpt.py
+
+CHECK_WRKREF_SKIP+=lib/firefox/chrome/toolkit/content/global/buildconfig.html
+
+MOZILLA=firefox
+MOZILLA_ICON= ${WRKSRC}/${OBJDIR}/dist/firefox/browser/chrome/icons/default/default48.png
+.if !empty(PKG_OPTIONS:Mofficial-mozilla-branding)
+MOZILLA_NAME= Firefox
+.else
+MOZILLA_NAME= Browser
+.endif
+
+SUBST_CLASSES+= sys-dic
+SUBST_STAGE.sys-dic= pre-configure
+SUBST_MESSAGE.sys-dic= Reference to system hunspell dictionaries.
+SUBST_FILES.sys-dic= extensions/spellcheck/hunspell/glue/mozHunspell.cpp
+SUBST_VARS.sys-dic= PREFIX
+
+pre-configure:
+ cd ${WRKSRC} && autoconf
+ cd ${WRKSRC}/js/src && autoconf
+ cd ${WRKSRC} && mkdir ${OBJDIR}
+ cd ${WRKSRC}/${OBJDIR} && touch old-configure.vars
+
+post-build:
+ ${SED} -e 's|@MOZILLA@|${MOZILLA}|g' \
+ -e 's|@MOZILLA_NAME@|${MOZILLA_NAME}|g' \
+ -e 's|@FIREFOX_ICON@|${MOZILLA}.png|g' \
+ < ${FILESDIR}/desktop.in \
+ > ${WRKDIR}/desktop
+
+INSTALLATION_DIRS+= share/applications share/pixmaps
+post-install:
+ ${INSTALL_DATA} ${WRKDIR}/desktop \
+ ${DESTDIR}${PREFIX}/share/applications/${MOZILLA}.desktop
+ ${INSTALL_DATA} ${MOZILLA_ICON} \
+ ${DESTDIR}${PREFIX}/share/pixmaps/${MOZILLA}.png
+
+.include "../../sysutils/desktop-file-utils/desktopdb.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/firefox-webrtc/PLIST b/firefox-webrtc/PLIST
new file mode 100644
index 0000000..42e098e
--- /dev/null
+++ b/firefox-webrtc/PLIST
@@ -0,0 +1,4113 @@
+@comment $NetBSD: PLIST,v 1.111 2016/10/28 17:47:21 riastradh Exp $
+bin/firefox
+lib/firefox/application.ini
+lib/firefox/browser/blocklist.xml
+lib/firefox/browser/chrome.manifest
+${PLIST.nobranding}lib/firefox/browser/chrome/browser/content/branding/about-background.png
+lib/firefox/browser/chrome/browser/content/branding/about-logo.png
+lib/firefox/browser/chrome/browser/content/branding/about-logo%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/branding/about-wordmark.svg
+lib/firefox/browser/chrome/browser/content/branding/about.png
+lib/firefox/browser/chrome/browser/content/branding/aboutDialog.css
+lib/firefox/browser/chrome/browser/content/branding/icon128.png
+lib/firefox/browser/chrome/browser/content/branding/icon16.png
+lib/firefox/browser/chrome/browser/content/branding/icon32.png
+lib/firefox/browser/chrome/browser/content/branding/icon48.png
+lib/firefox/browser/chrome/browser/content/branding/icon64.png
+lib/firefox/browser/chrome/browser/content/branding/identity-icons-brand.svg
+lib/firefox/browser/chrome/browser/content/branding/silhouette-40.svg
+lib/firefox/browser/chrome/browser/content/browser/aboutDialog-appUpdater.js
+lib/firefox/browser/chrome/browser/content/browser/aboutDialog.css
+lib/firefox/browser/chrome/browser/content/browser/aboutDialog.js
+lib/firefox/browser/chrome/browser/content/browser/aboutDialog.xul
+lib/firefox/browser/chrome/browser/content/browser/aboutNetError.xhtml
+lib/firefox/browser/chrome/browser/content/browser/aboutPrivateBrowsing.css
+lib/firefox/browser/chrome/browser/content/browser/aboutPrivateBrowsing.js
+lib/firefox/browser/chrome/browser/content/browser/aboutPrivateBrowsing.xhtml
+lib/firefox/browser/chrome/browser/content/browser/aboutProviderDirectory.xhtml
+lib/firefox/browser/chrome/browser/content/browser/aboutRobots-icon.png
+lib/firefox/browser/chrome/browser/content/browser/aboutRobots-widget-left.png
+lib/firefox/browser/chrome/browser/content/browser/aboutRobots.xhtml
+lib/firefox/browser/chrome/browser/content/browser/aboutSessionRestore.js
+lib/firefox/browser/chrome/browser/content/browser/aboutSessionRestore.xhtml
+lib/firefox/browser/chrome/browser/content/browser/aboutSocialError.xhtml
+lib/firefox/browser/chrome/browser/content/browser/aboutTabCrashed.css
+lib/firefox/browser/chrome/browser/content/browser/aboutTabCrashed.js
+lib/firefox/browser/chrome/browser/content/browser/aboutTabCrashed.xhtml
+lib/firefox/browser/chrome/browser/content/browser/aboutTabGroupsMigration.js
+lib/firefox/browser/chrome/browser/content/browser/aboutTabGroupsMigration.xhtml
+lib/firefox/browser/chrome/browser/content/browser/aboutWelcomeBack.xhtml
+lib/firefox/browser/chrome/browser/content/browser/aboutaccounts/aboutaccounts.css
+lib/firefox/browser/chrome/browser/content/browser/aboutaccounts/aboutaccounts.js
+lib/firefox/browser/chrome/browser/content/browser/aboutaccounts/aboutaccounts.xhtml
+lib/firefox/browser/chrome/browser/content/browser/aboutaccounts/images/fox.png
+lib/firefox/browser/chrome/browser/content/browser/aboutaccounts/images/graphic_sync_intro.png
+lib/firefox/browser/chrome/browser/content/browser/aboutaccounts/images/graphic_sync_intro%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/aboutaccounts/main.css
+lib/firefox/browser/chrome/browser/content/browser/aboutaccounts/normalize.css
+lib/firefox/browser/chrome/browser/content/browser/abouthealthreport/abouthealth.css
+lib/firefox/browser/chrome/browser/content/browser/abouthealthreport/abouthealth.js
+lib/firefox/browser/chrome/browser/content/browser/abouthealthreport/abouthealth.xhtml
+lib/firefox/browser/chrome/browser/content/browser/abouthome/aboutHome.css
+lib/firefox/browser/chrome/browser/content/browser/abouthome/aboutHome.js
+lib/firefox/browser/chrome/browser/content/browser/abouthome/aboutHome.xhtml
+lib/firefox/browser/chrome/browser/content/browser/abouthome/addons.png
+lib/firefox/browser/chrome/browser/content/browser/abouthome/addons%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/abouthome/bookmarks.png
+lib/firefox/browser/chrome/browser/content/browser/abouthome/bookmarks%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/abouthome/downloads.png
+lib/firefox/browser/chrome/browser/content/browser/abouthome/downloads%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/abouthome/history.png
+lib/firefox/browser/chrome/browser/content/browser/abouthome/history%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/abouthome/mozilla.png
+lib/firefox/browser/chrome/browser/content/browser/abouthome/mozilla%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/abouthome/restore-large.png
+lib/firefox/browser/chrome/browser/content/browser/abouthome/restore-large%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/abouthome/restore.png
+lib/firefox/browser/chrome/browser/content/browser/abouthome/restore%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/abouthome/settings.png
+lib/firefox/browser/chrome/browser/content/browser/abouthome/settings%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/abouthome/snippet1.png
+lib/firefox/browser/chrome/browser/content/browser/abouthome/snippet1%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/abouthome/snippet2.png
+lib/firefox/browser/chrome/browser/content/browser/abouthome/snippet2%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/abouthome/sync.png
+lib/firefox/browser/chrome/browser/content/browser/abouthome/sync%2x.png@localhost
+lib/firefox/browser/chrome/browser/content/browser/baseMenuOverlay.xul
+lib/firefox/browser/chrome/browser/content/browser/blockedSite.xhtml
+lib/firefox/browser/chrome/browser/content/browser/bookmarks/bookmarksPanel.js
+lib/firefox/browser/chrome/browser/content/browser/bookmarks/bookmarksPanel.xul
+lib/firefox/browser/chrome/browser/content/browser/bookmarks/sidebarUtils.js
+lib/firefox/browser/chrome/browser/content/browser/browser-addons.js
+lib/firefox/browser/chrome/browser/content/browser/browser-ctrlTab.js
+lib/firefox/browser/chrome/browser/content/browser/browser-customization.js
+lib/firefox/browser/chrome/browser/content/browser/browser-data-submission-info-bar.js
+lib/firefox/browser/chrome/browser/content/browser/browser-devedition.js
+lib/firefox/browser/chrome/browser/content/browser/browser-feeds.js
+lib/firefox/browser/chrome/browser/content/browser/browser-fullScreen.js
+lib/firefox/browser/chrome/browser/content/browser/browser-fullZoom.js
+lib/firefox/browser/chrome/browser/content/browser/browser-fxaccounts.js
+lib/firefox/browser/chrome/browser/content/browser/browser-gestureSupport.js
+lib/firefox/browser/chrome/browser/content/browser/browser-media.js
+lib/firefox/browser/chrome/browser/content/browser/browser-places.js
+lib/firefox/browser/chrome/browser/content/browser/browser-plugins.js
+lib/firefox/browser/chrome/browser/content/browser/browser-refreshblocker.js
+lib/firefox/browser/chrome/browser/content/browser/browser-safebrowsing.js
+lib/firefox/browser/chrome/browser/content/browser/browser-sidebar.js
+lib/firefox/browser/chrome/browser/content/browser/browser-social.js
+lib/firefox/browser/chrome/browser/content/browser/browser-syncui.js
+lib/firefox/browser/chrome/browser/content/browser/browser-tabPreviews.xml
+lib/firefox/browser/chrome/browser/content/browser/browser-tabsintitlebar.js
+lib/firefox/browser/chrome/browser/content/browser/browser-thumbnails.js
+lib/firefox/browser/chrome/browser/content/browser/browser-trackingprotection.js
+lib/firefox/browser/chrome/browser/content/browser/browser.css
+lib/firefox/browser/chrome/browser/content/browser/browser.js
+lib/firefox/browser/chrome/browser/content/browser/browser.xul
+lib/firefox/browser/chrome/browser/content/browser/chatWindow.xul
+lib/firefox/browser/chrome/browser/content/browser/content-UITour.js
+lib/firefox/browser/chrome/browser/content/browser/content-sessionStore.js
+lib/firefox/browser/chrome/browser/content/browser/content.js
+lib/firefox/browser/chrome/browser/content/browser/contentSearchUI.css
+lib/firefox/browser/chrome/browser/content/browser/contentSearchUI.js
+lib/firefox/browser/chrome/browser/content/browser/customizableui/panelUI.css
+lib/firefox/browser/chrome/browser/content/browser/customizableui/panelUI.js
+lib/firefox/browser/chrome/browser/content/browser/customizableui/panelUI.xml
+lib/firefox/browser/chrome/browser/content/browser/customizableui/toolbar.xml
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/1.footer.jpg
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/1.header.jpg
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/1.icon.jpg
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/1.preview.jpg
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/2.footer.jpg
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/2.header.jpg
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/2.icon.jpg
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/2.preview.jpg
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/3.footer.png
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/3.header.png
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/3.icon.png
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/3.preview.png
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/4.footer.png
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/4.header.png
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/4.icon.png
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/4.preview.png
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/5.footer.png
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/5.header.png
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/5.icon.jpg
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/5.preview.jpg
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/devedition.header.png
+lib/firefox/browser/chrome/browser/content/browser/defaultthemes/devedition.icon.png
+lib/firefox/browser/chrome/browser/content/browser/downloads/allDownloadsViewOverlay.js
+lib/firefox/browser/chrome/browser/content/browser/downloads/allDownloadsViewOverlay.xul
+lib/firefox/browser/chrome/browser/content/browser/downloads/contentAreaDownloadsView.css
+lib/firefox/browser/chrome/browser/content/browser/downloads/contentAreaDownloadsView.js
+lib/firefox/browser/chrome/browser/content/browser/downloads/contentAreaDownloadsView.xul
+lib/firefox/browser/chrome/browser/content/browser/downloads/download.xml
+lib/firefox/browser/chrome/browser/content/browser/downloads/downloads.css
+lib/firefox/browser/chrome/browser/content/browser/downloads/downloads.js
+lib/firefox/browser/chrome/browser/content/browser/downloads/downloadsOverlay.xul
+lib/firefox/browser/chrome/browser/content/browser/downloads/indicator.js
+lib/firefox/browser/chrome/browser/content/browser/downloads/indicatorOverlay.xul
+lib/firefox/browser/chrome/browser/content/browser/ext-bookmarks.js
+lib/firefox/browser/chrome/browser/content/browser/ext-browserAction.js
+lib/firefox/browser/chrome/browser/content/browser/ext-commands.js
+lib/firefox/browser/chrome/browser/content/browser/ext-contextMenus.js
+lib/firefox/browser/chrome/browser/content/browser/ext-desktop-runtime.js
+lib/firefox/browser/chrome/browser/content/browser/ext-history.js
+lib/firefox/browser/chrome/browser/content/browser/ext-pageAction.js
+lib/firefox/browser/chrome/browser/content/browser/ext-tabs.js
+lib/firefox/browser/chrome/browser/content/browser/ext-utils.js
+lib/firefox/browser/chrome/browser/content/browser/ext-windows.js
+lib/firefox/browser/chrome/browser/content/browser/extension-mac.css
+lib/firefox/browser/chrome/browser/content/browser/extension.css
+lib/firefox/browser/chrome/browser/content/browser/extension.svg
+lib/firefox/browser/chrome/browser/content/browser/feeds/subscribe.js
+lib/firefox/browser/chrome/browser/content/browser/feeds/subscribe.xhtml
+lib/firefox/browser/chrome/browser/content/browser/gcli_sec_bad.svg
+lib/firefox/browser/chrome/browser/content/browser/gcli_sec_good.svg
+lib/firefox/browser/chrome/browser/content/browser/gcli_sec_moderate.svg
+lib/firefox/browser/chrome/browser/content/browser/hiddenWindow.xul
+lib/firefox/browser/chrome/browser/content/browser/history/history-panel.xul
+lib/firefox/browser/chrome/browser/content/browser/license.html
+lib/firefox/browser/chrome/browser/content/browser/microsoft-translator-attribution.png
+lib/firefox/browser/chrome/browser/content/browser/migration/automigration.properties
+lib/firefox/browser/chrome/browser/content/browser/migration/migration.js
+lib/firefox/browser/chrome/browser/content/browser/migration/migration.xul
+lib/firefox/browser/chrome/browser/content/browser/newtab/newTab.css
+lib/firefox/browser/chrome/browser/content/browser/newtab/newTab.inadjacent.json
+lib/firefox/browser/chrome/browser/content/browser/newtab/newTab.js
+lib/firefox/browser/chrome/browser/content/browser/newtab/newTab.xhtml
+lib/firefox/browser/chrome/browser/content/browser/nsContextMenu.js
+lib/firefox/browser/chrome/browser/content/browser/pageinfo/feeds.js
+lib/firefox/browser/chrome/browser/content/browser/pageinfo/feeds.xml
+lib/firefox/browser/chrome/browser/content/browser/pageinfo/pageInfo.css
+lib/firefox/browser/chrome/browser/content/browser/pageinfo/pageInfo.js
+lib/firefox/browser/chrome/browser/content/browser/pageinfo/pageInfo.xml
+lib/firefox/browser/chrome/browser/content/browser/pageinfo/pageInfo.xul
+lib/firefox/browser/chrome/browser/content/browser/pageinfo/permissions.js
+lib/firefox/browser/chrome/browser/content/browser/pageinfo/security.js
+lib/firefox/browser/chrome/browser/content/browser/places/bookmarkProperties.js
+lib/firefox/browser/chrome/browser/content/browser/places/bookmarkProperties.xul
+lib/firefox/browser/chrome/browser/content/browser/places/bookmarkProperties2.xul
+lib/firefox/browser/chrome/browser/content/browser/places/browserPlacesViews.js
+lib/firefox/browser/chrome/browser/content/browser/places/controller.js
+lib/firefox/browser/chrome/browser/content/browser/places/downloadsViewOverlay.xul
+lib/firefox/browser/chrome/browser/content/browser/places/editBookmarkOverlay.js
+lib/firefox/browser/chrome/browser/content/browser/places/editBookmarkOverlay.xul
+lib/firefox/browser/chrome/browser/content/browser/places/history-panel.js
+lib/firefox/browser/chrome/browser/content/browser/places/menu.xml
+lib/firefox/browser/chrome/browser/content/browser/places/moveBookmarks.js
+lib/firefox/browser/chrome/browser/content/browser/places/moveBookmarks.xul
+lib/firefox/browser/chrome/browser/content/browser/places/organizer.css
+lib/firefox/browser/chrome/browser/content/browser/places/places.css
+lib/firefox/browser/chrome/browser/content/browser/places/places.js
+lib/firefox/browser/chrome/browser/content/browser/places/places.xul
+lib/firefox/browser/chrome/browser/content/browser/places/placesOverlay.xul
+lib/firefox/browser/chrome/browser/content/browser/places/tree.xml
+lib/firefox/browser/chrome/browser/content/browser/places/treeView.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/applicationManager.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/applicationManager.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/blocklists.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/blocklists.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/colors.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/connection.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/connection.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/cookies.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/cookies.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/donottrack.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/fonts.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/fonts.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/handlers.css
+lib/firefox/browser/chrome/browser/content/browser/preferences/handlers.xml
+lib/firefox/browser/chrome/browser/content/browser/preferences/in-content/advanced.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/in-content/applications.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/in-content/content.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/in-content/main.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/in-content/preferences.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/in-content/preferences.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/in-content/privacy.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/in-content/search.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/in-content/security.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/in-content/subdialogs.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/in-content/sync.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/languages.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/languages.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/permissions.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/permissions.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/sanitize.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/sanitize.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/selectBookmark.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/selectBookmark.xul
+lib/firefox/browser/chrome/browser/content/browser/preferences/translation.js
+lib/firefox/browser/chrome/browser/content/browser/preferences/translation.xul
+lib/firefox/browser/chrome/browser/content/browser/report-phishing-overlay.xul
+lib/firefox/browser/chrome/browser/content/browser/safeMode.css
+lib/firefox/browser/chrome/browser/content/browser/safeMode.js
+lib/firefox/browser/chrome/browser/content/browser/safeMode.xul
+lib/firefox/browser/chrome/browser/content/browser/sanitize.js
+lib/firefox/browser/chrome/browser/content/browser/sanitize.xul
+lib/firefox/browser/chrome/browser/content/browser/sanitizeDialog.css
+lib/firefox/browser/chrome/browser/content/browser/sanitizeDialog.js
+lib/firefox/browser/chrome/browser/content/browser/schemas/bookmarks.json
+lib/firefox/browser/chrome/browser/content/browser/schemas/browser_action.json
+lib/firefox/browser/chrome/browser/content/browser/schemas/commands.json
+lib/firefox/browser/chrome/browser/content/browser/schemas/context_menus.json
+lib/firefox/browser/chrome/browser/content/browser/schemas/context_menus_internal.json
+lib/firefox/browser/chrome/browser/content/browser/schemas/history.json
+lib/firefox/browser/chrome/browser/content/browser/schemas/page_action.json
+lib/firefox/browser/chrome/browser/content/browser/schemas/tabs.json
+lib/firefox/browser/chrome/browser/content/browser/schemas/windows.json
+lib/firefox/browser/chrome/browser/content/browser/search/search.xml
+lib/firefox/browser/chrome/browser/content/browser/search/searchReset.js
+lib/firefox/browser/chrome/browser/content/browser/search/searchReset.xhtml
+lib/firefox/browser/chrome/browser/content/browser/search/searchbarBindings.css
+lib/firefox/browser/chrome/browser/content/browser/setDesktopBackground.js
+lib/firefox/browser/chrome/browser/content/browser/setDesktopBackground.xul
+lib/firefox/browser/chrome/browser/content/browser/social-content.js
+lib/firefox/browser/chrome/browser/content/browser/socialchat.xml
+lib/firefox/browser/chrome/browser/content/browser/socialmarks.xml
+lib/firefox/browser/chrome/browser/content/browser/sync/aboutSyncTabs-bindings.xml
+lib/firefox/browser/chrome/browser/content/browser/sync/aboutSyncTabs.css
+lib/firefox/browser/chrome/browser/content/browser/sync/aboutSyncTabs.js
+lib/firefox/browser/chrome/browser/content/browser/sync/aboutSyncTabs.xul
+lib/firefox/browser/chrome/browser/content/browser/sync/addDevice.js
+lib/firefox/browser/chrome/browser/content/browser/sync/addDevice.xul
+lib/firefox/browser/chrome/browser/content/browser/sync/customize.css
+lib/firefox/browser/chrome/browser/content/browser/sync/customize.js
+lib/firefox/browser/chrome/browser/content/browser/sync/customize.xul
+lib/firefox/browser/chrome/browser/content/browser/sync/genericChange.js
+lib/firefox/browser/chrome/browser/content/browser/sync/genericChange.xul
+lib/firefox/browser/chrome/browser/content/browser/sync/key.xhtml
+lib/firefox/browser/chrome/browser/content/browser/sync/setup.js
+lib/firefox/browser/chrome/browser/content/browser/sync/setup.xul
+lib/firefox/browser/chrome/browser/content/browser/sync/utils.js
+lib/firefox/browser/chrome/browser/content/browser/syncedtabs/sidebar.js
+lib/firefox/browser/chrome/browser/content/browser/syncedtabs/sidebar.xhtml
+lib/firefox/browser/chrome/browser/content/browser/tab-content.js
+lib/firefox/browser/chrome/browser/content/browser/tabbrowser.css
+lib/firefox/browser/chrome/browser/content/browser/tabbrowser.xml
+lib/firefox/browser/chrome/browser/content/browser/translation-infobar.xml
+lib/firefox/browser/chrome/browser/content/browser/urlbarBindings.xml
+lib/firefox/browser/chrome/browser/content/browser/usercontext/usercontext.css
+lib/firefox/browser/chrome/browser/content/browser/utilityOverlay.js
+lib/firefox/browser/chrome/browser/content/browser/viewSourceOverlay.xul
+lib/firefox/browser/chrome/browser/content/browser/web-panels.js
+lib/firefox/browser/chrome/browser/content/browser/web-panels.xul
+lib/firefox/browser/chrome/browser/content/browser/webrtcIndicator.js
+lib/firefox/browser/chrome/browser/content/browser/webrtcIndicator.xul
+lib/firefox/browser/chrome/browser/skin/classic/browser/Geolocation-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/Geolocation-64.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/Info.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/Privacy-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/Security-broken.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/Toolbar-inverted.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/Toolbar-small.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/Toolbar.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/aboutNetError.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/aboutProviderDirectory.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/aboutSessionRestore-window-icon.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/aboutSessionRestore.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/aboutSocialError.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/aboutSyncTabs.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/aboutTabCrashed.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/aboutWelcomeBack.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/actionicon-tab.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/addons/addon-install-anchor.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/addons/addon-install-blocked.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/addons/addon-install-confirm.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/addons/addon-install-downloading.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/addons/addon-install-error.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/addons/addon-install-installed.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/addons/addon-install-restart.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/addons/addon-install-warning.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/badge-add-engine.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/badge-add-engine%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/blockedSite.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/browser-lightweightTheme.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/browser.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/cert-error.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/click-to-play-warning-stripes.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/content-contextmenu.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/arrow-subview-back.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/arrow-subview.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/conn-degraded.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/conn-not-secure.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/conn-secure.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/mcb-disabled.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/panel.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/permissions.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/tracking-protection-disabled.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/tracking-protection.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/warning-gray.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/controlcenter/warning-yellow.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/background-noise-toolbar.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/customize-illustration-rtl.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/customize-illustration-rtl%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/customize-illustration.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/customize-illustration%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/customizeFavicon.ico
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/customizeMode-gridTexture.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/customizeMode-separatorHorizontal.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/customizeMode-separatorVertical.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/info-icon-customizeTip.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/info-icon-customizeTip%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/menuPanel-customizeFinish.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/menuPanel-customizeFinish%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/panelUIOverlay.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/panelarrow-customizeTip.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/panelarrow-customizeTip%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/subView-arrow-back-inverted-rtl.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/subView-arrow-back-inverted-rtl%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/subView-arrow-back-inverted.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/subView-arrow-back-inverted%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/whimsy.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/customizableui/whimsy%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/devedition.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/devedition/urlbar-arrow.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/devedition/urlbar-arrow%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/devedition/urlbar-history-dropmarker.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/devtools/common.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/downloads/allDownloadsViewOverlay.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/downloads/buttons.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/downloads/contentAreaDownloadsView.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/downloads/download-glow-menuPanel.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/downloads/download-notification-finish.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/downloads/download-notification-start.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/downloads/download-summary.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/downloads/downloads.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/drm-icon.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/error-pages.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/favicon-search-16.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/feeds/feedIcon.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/feeds/feedIcon16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/feeds/subscribe-ui.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/feeds/subscribe.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/fullscreen/insecure.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/fullscreen/secure.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/fxa/android.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/fxa/android%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/fxa/default-avatar.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/fxa/ios.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/fxa/ios%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/fxa/logo.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/fxa/logo%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/fxa/sync-illustration.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/fxa/sync-illustration.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/fxa/sync-illustration%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/heartbeat-icon.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/heartbeat-star-lit.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/heartbeat-star-off.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/icon-search-64.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/identity-icon.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/identity-mixed-active-blocked.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/identity-mixed-active-loaded.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/identity-mixed-passive-loaded.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/identity-not-secure.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/identity-secure.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/info.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/menuPanel-customize.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/menuPanel-customize%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/menuPanel-exit.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/menuPanel-exit%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/menuPanel-help.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/menuPanel-help%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/menuPanel-small.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/menuPanel-small%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/menuPanel.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/menuPanel%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/monitor.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/monitor_16-10.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/newtab/close.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/newtab/controls.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/newtab/newTab.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/newtab/whimsycorn.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/notification-pluginAlert.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/notification-pluginAlert%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/notification-pluginBlocked.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/notification-pluginBlocked%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/notification-pluginNormal.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/notification-pluginNormal%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/page-livemarks.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/pageInfo.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/pageInfo.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/panic-panel/header-small.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/panic-panel/header-small%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/panic-panel/header.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/panic-panel/header%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/panic-panel/icons.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/panic-panel/icons%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/autocomplete-star.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/bookmarks-menu-arrow.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/bookmarks-notification-finish.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/bookmarksMenu.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/bookmarksToolbar-menuPanel.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/bookmarksToolbar.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/calendar.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/downloads.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/editBookmarkOverlay.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/livemark-item.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/organizer.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/organizer.xml
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/places.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/query.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/starred48.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/tag.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/toolbarDropMarker.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/unsortedBookmarks.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/places/unstarred48.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/pointerLock-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/pointerLock-64.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/preferences/Options-sync.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/preferences/Options.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/preferences/alwaysAsk.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/preferences/applications.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/preferences/in-content/dialog.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/preferences/in-content/favicon.ico
+lib/firefox/browser/chrome/browser/skin/classic/browser/preferences/in-content/icons.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/preferences/in-content/preferences.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/preferences/in-content/search.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/preferences/mail.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/preferences/preferences.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/privatebrowsing-mask.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/privatebrowsing/aboutPrivateBrowsing.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/privatebrowsing/check.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/privatebrowsing/favicon.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/privatebrowsing/private-browsing.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/privatebrowsing/tracking-protection-off.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/privatebrowsing/tracking-protection.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/reader-tour.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/reader-tour%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/readerMode.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/reload-stop-go.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/reload-stop-go%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/sanitizeDialog.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/search-arrow-go.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/search-engine-placeholder.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/search-engine-placeholder%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/search-history-icon.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/search-indicator-badge-add.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/search-indicator-badge-add%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/search-indicator-magnifying-glass.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/search-indicator.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/search-indicator%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/search-pref.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/searchReset.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/searchbar.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/session-restore.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/setDesktopBackground.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/slowStartup-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/social/chat-icons.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/social/gear_clicked.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/social/gear_default.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/social/services-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/social/services-64.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/social/share-button-active.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/social/share-button.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/sync-128.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/sync-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/sync-32.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/sync-bg.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/sync-desktopIcon.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/sync-horizontalbar.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/sync-horizontalbar%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/sync-mobileIcon.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/sync-notification-24.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/syncCommon.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/syncProgress-horizontalbar.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/syncProgress-horizontalbar%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/syncProgress-menuPanel.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/syncProgress-menuPanel%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/syncProgress-toolbar-inverted.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/syncProgress-toolbar.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/syncQuota.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/syncSetup.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/syncedtabs/sidebar.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/tab-crashed.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/alltabs-inverted.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/alltabs.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/connecting.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/crashed.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/newtab-inverted.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/newtab.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/pendingpaint.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-active-middle.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-arrow-left-inverted.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-arrow-left.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-audio-small.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-audio.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-background-end.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-background-middle.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-background-start.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-overflow-indicator.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-selected-end.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-selected-start.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-stroke-end.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-stroke-start.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/tabbrowser/tabDragIndicator.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/theme-switcher-icon.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/theme-switcher-icon%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/tracking-protection-16.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/tracking-protection-disabled-16.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/translating-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/translating-16%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/translation-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/translation-16%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/undoCloseTab.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/undoCloseTab%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/update-badge-failed.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/update-badge.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/urlbar-arrow.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/urlbar-arrow%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/urlbar-star.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/urlbar-tab.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/usercontext/banking.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/usercontext/personal.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/usercontext/shopping.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/usercontext/work.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/warning.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/web-notifications-icon.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/web-notifications-tray.svg
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-camera-white-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-indicator.css
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-microphone-white-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-screen-white-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareDevice-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareDevice-16%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareDevice-64.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareDevice-64%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareMicrophone-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareMicrophone-16%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareMicrophone-64.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareMicrophone-64%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareScreen-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareScreen-16%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareScreen-64.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-shareScreen-64%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-sharingDevice-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-sharingDevice-16%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-sharingMicrophone-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-sharingMicrophone-16%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-sharingScreen-16.png
+lib/firefox/browser/chrome/browser/skin/classic/browser/webRTC-sharingScreen-16%2x.png@localhost
+lib/firefox/browser/chrome/browser/skin/classic/browser/welcome-back.svg
+lib/firefox/browser/chrome/browser/skin/classic/communicator/communicator.css
+lib/firefox/browser/chrome/chrome.manifest
+lib/firefox/browser/chrome/devtools/content/aboutdebugging/aboutdebugging.css
+lib/firefox/browser/chrome/devtools/content/aboutdebugging/aboutdebugging.xhtml
+lib/firefox/browser/chrome/devtools/content/aboutdebugging/initializer.js
+lib/firefox/browser/chrome/devtools/content/animationinspector/animation-controller.js
+lib/firefox/browser/chrome/devtools/content/animationinspector/animation-inspector.xhtml
+lib/firefox/browser/chrome/devtools/content/animationinspector/animation-panel.js
+lib/firefox/browser/chrome/devtools/content/canvasdebugger/callslist.js
+lib/firefox/browser/chrome/devtools/content/canvasdebugger/canvasdebugger.js
+lib/firefox/browser/chrome/devtools/content/canvasdebugger/canvasdebugger.xul
+lib/firefox/browser/chrome/devtools/content/canvasdebugger/snapshotslist.js
+lib/firefox/browser/chrome/devtools/content/commandline/commandline.css
+lib/firefox/browser/chrome/devtools/content/commandline/commandlineoutput.xhtml
+lib/firefox/browser/chrome/devtools/content/commandline/commandlinetooltip.xhtml
+lib/firefox/browser/chrome/devtools/content/debugger/debugger-controller.js
+lib/firefox/browser/chrome/devtools/content/debugger/debugger-view.js
+lib/firefox/browser/chrome/devtools/content/debugger/debugger.css
+lib/firefox/browser/chrome/devtools/content/debugger/debugger.xul
+lib/firefox/browser/chrome/devtools/content/debugger/utils.js
+lib/firefox/browser/chrome/devtools/content/debugger/views/filter-view.js
+lib/firefox/browser/chrome/devtools/content/debugger/views/global-search-view.js
+lib/firefox/browser/chrome/devtools/content/debugger/views/options-view.js
+lib/firefox/browser/chrome/devtools/content/debugger/views/stack-frames-classic-view.js
+lib/firefox/browser/chrome/devtools/content/debugger/views/stack-frames-view.js
+lib/firefox/browser/chrome/devtools/content/debugger/views/toolbar-view.js
+lib/firefox/browser/chrome/devtools/content/debugger/views/variable-bubble-view.js
+lib/firefox/browser/chrome/devtools/content/debugger/views/watch-expressions-view.js
+lib/firefox/browser/chrome/devtools/content/debugger/views/workers-view.js
+lib/firefox/browser/chrome/devtools/content/dom/content/dom-view.css
+lib/firefox/browser/chrome/devtools/content/dom/dom.html
+lib/firefox/browser/chrome/devtools/content/dom/main.js
+lib/firefox/browser/chrome/devtools/content/eyedropper/crosshairs.css
+lib/firefox/browser/chrome/devtools/content/eyedropper/eyedropper.xul
+lib/firefox/browser/chrome/devtools/content/eyedropper/nocursor.css
+lib/firefox/browser/chrome/devtools/content/framework/connect/connect.css
+lib/firefox/browser/chrome/devtools/content/framework/connect/connect.js
+lib/firefox/browser/chrome/devtools/content/framework/connect/connect.xhtml
+lib/firefox/browser/chrome/devtools/content/framework/dev-edition-promo/dev-edition-logo.png
+lib/firefox/browser/chrome/devtools/content/framework/dev-edition-promo/dev-edition-promo.css
+lib/firefox/browser/chrome/devtools/content/framework/dev-edition-promo/dev-edition-promo.xul
+lib/firefox/browser/chrome/devtools/content/framework/options-panel.css
+lib/firefox/browser/chrome/devtools/content/framework/toolbox-init.js
+lib/firefox/browser/chrome/devtools/content/framework/toolbox-options.js
+lib/firefox/browser/chrome/devtools/content/framework/toolbox-options.xhtml
+lib/firefox/browser/chrome/devtools/content/framework/toolbox-process-window.js
+lib/firefox/browser/chrome/devtools/content/framework/toolbox-process-window.xul
+lib/firefox/browser/chrome/devtools/content/framework/toolbox-window.xul
+lib/firefox/browser/chrome/devtools/content/framework/toolbox.xul
+lib/firefox/browser/chrome/devtools/content/inspector/fonts/fonts.js
+lib/firefox/browser/chrome/devtools/content/inspector/inspector.css
+lib/firefox/browser/chrome/devtools/content/inspector/inspector.xul
+lib/firefox/browser/chrome/devtools/content/inspector/layout/layout.js
+lib/firefox/browser/chrome/devtools/content/inspector/markup/markup.xhtml
+lib/firefox/browser/chrome/devtools/content/memory/initializer.js
+lib/firefox/browser/chrome/devtools/content/memory/memory.xhtml
+lib/firefox/browser/chrome/devtools/content/netmonitor/netmonitor-controller.js
+lib/firefox/browser/chrome/devtools/content/netmonitor/netmonitor-view.js
+lib/firefox/browser/chrome/devtools/content/netmonitor/netmonitor.css
+lib/firefox/browser/chrome/devtools/content/netmonitor/netmonitor.xul
+lib/firefox/browser/chrome/devtools/content/performance/performance-controller.js
+lib/firefox/browser/chrome/devtools/content/performance/performance-view.js
+lib/firefox/browser/chrome/devtools/content/performance/performance.xul
+lib/firefox/browser/chrome/devtools/content/performance/views/details-abstract-subview.js
+lib/firefox/browser/chrome/devtools/content/performance/views/details-js-call-tree.js
+lib/firefox/browser/chrome/devtools/content/performance/views/details-js-flamegraph.js
+lib/firefox/browser/chrome/devtools/content/performance/views/details-memory-call-tree.js
+lib/firefox/browser/chrome/devtools/content/performance/views/details-memory-flamegraph.js
+lib/firefox/browser/chrome/devtools/content/performance/views/details-waterfall.js
+lib/firefox/browser/chrome/devtools/content/performance/views/details.js
+lib/firefox/browser/chrome/devtools/content/performance/views/overview.js
+lib/firefox/browser/chrome/devtools/content/performance/views/recordings.js
+lib/firefox/browser/chrome/devtools/content/performance/views/toolbar.js
+lib/firefox/browser/chrome/devtools/content/projecteditor/chrome/content/projecteditor-loader.js
+lib/firefox/browser/chrome/devtools/content/projecteditor/chrome/content/projecteditor-loader.xul
+lib/firefox/browser/chrome/devtools/content/projecteditor/chrome/content/projecteditor-test.xul
+lib/firefox/browser/chrome/devtools/content/projecteditor/chrome/content/projecteditor.xul
+lib/firefox/browser/chrome/devtools/content/projecteditor/lib/helpers/readdir.js
+lib/firefox/browser/chrome/devtools/content/promisedebugger/promise-controller.js
+lib/firefox/browser/chrome/devtools/content/promisedebugger/promise-debugger.xhtml
+lib/firefox/browser/chrome/devtools/content/promisedebugger/promise-panel.js
+lib/firefox/browser/chrome/devtools/content/responsive.html/index.js
+lib/firefox/browser/chrome/devtools/content/responsive.html/index.xhtml
+lib/firefox/browser/chrome/devtools/content/scratchpad/scratchpad.js
+lib/firefox/browser/chrome/devtools/content/scratchpad/scratchpad.xul
+lib/firefox/browser/chrome/devtools/content/shadereditor/shadereditor.js
+lib/firefox/browser/chrome/devtools/content/shadereditor/shadereditor.xul
+lib/firefox/browser/chrome/devtools/content/shared/frame-script-utils.js
+lib/firefox/browser/chrome/devtools/content/shared/splitview.css
+lib/firefox/browser/chrome/devtools/content/shared/theme-switching.js
+lib/firefox/browser/chrome/devtools/content/shared/vendor/d3.js
+lib/firefox/browser/chrome/devtools/content/shared/vendor/dagre-d3.js
+lib/firefox/browser/chrome/devtools/content/shared/widgets/VariablesView.xul
+lib/firefox/browser/chrome/devtools/content/shared/widgets/cubic-bezier-frame.xhtml
+lib/firefox/browser/chrome/devtools/content/shared/widgets/cubic-bezier.css
+lib/firefox/browser/chrome/devtools/content/shared/widgets/filter-frame.xhtml
+lib/firefox/browser/chrome/devtools/content/shared/widgets/filter-widget.css
+lib/firefox/browser/chrome/devtools/content/shared/widgets/graphs-frame.xhtml
+lib/firefox/browser/chrome/devtools/content/shared/widgets/mdn-docs-frame.xhtml
+lib/firefox/browser/chrome/devtools/content/shared/widgets/mdn-docs.css
+lib/firefox/browser/chrome/devtools/content/shared/widgets/spectrum-frame.xhtml
+lib/firefox/browser/chrome/devtools/content/shared/widgets/tooltip-frame.xhtml
+lib/firefox/browser/chrome/devtools/content/shared/widgets/widgets.css
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/comment/comment.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/dialog/dialog.css
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/dialog/dialog.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/edit/closebrackets.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/edit/matchbrackets.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/edit/trailingspace.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/fold/brace-fold.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/fold/comment-fold.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/fold/foldcode.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/fold/foldgutter.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/fold/xml-fold.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/hint/show-hint.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/search/search.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/search/searchcursor.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/selection/active-line.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/addon/tern/tern.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/keymap/emacs.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/keymap/sublime.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/keymap/vim.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/lib/codemirror.css
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/lib/codemirror.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/mode/clike.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/mode/css.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/mode/htmlmixed.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/mode/javascript.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/mode/xml.js
+lib/firefox/browser/chrome/devtools/content/sourceeditor/codemirror/mozilla.css
+lib/firefox/browser/chrome/devtools/content/storage/storage.xul
+lib/firefox/browser/chrome/devtools/content/styleeditor/styleeditor.css
+lib/firefox/browser/chrome/devtools/content/styleeditor/styleeditor.xul
+lib/firefox/browser/chrome/devtools/content/webaudioeditor/controller.js
+lib/firefox/browser/chrome/devtools/content/webaudioeditor/includes.js
+lib/firefox/browser/chrome/devtools/content/webaudioeditor/models.js
+lib/firefox/browser/chrome/devtools/content/webaudioeditor/views/automation.js
+lib/firefox/browser/chrome/devtools/content/webaudioeditor/views/context.js
+lib/firefox/browser/chrome/devtools/content/webaudioeditor/views/inspector.js
+lib/firefox/browser/chrome/devtools/content/webaudioeditor/views/properties.js
+lib/firefox/browser/chrome/devtools/content/webaudioeditor/views/utils.js
+lib/firefox/browser/chrome/devtools/content/webaudioeditor/webaudioeditor.xul
+lib/firefox/browser/chrome/devtools/content/webconsole/webconsole.xul
+lib/firefox/browser/chrome/devtools/modules/devtools/acorn/acorn.js
+lib/firefox/browser/chrome/devtools/modules/devtools/acorn/acorn_loose.js
+lib/firefox/browser/chrome/devtools/modules/devtools/acorn/walk.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/aboutdebugging.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/addons/controls.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/addons/install-error.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/addons/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/addons/target.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/panel-header.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/panel-menu-entry.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/panel-menu.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/tabs/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/tabs/target.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/target-list.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/workers/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/workers/service-worker-target.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/components/workers/target.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/aboutdebugging/modules/worker.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/animationinspector/components/animation-details.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/animationinspector/components/animation-target-node.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/animationinspector/components/animation-time-block.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/animationinspector/components/animation-timeline.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/animationinspector/components/keyframes.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/animationinspector/components/rate-selector.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/animationinspector/utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/canvasdebugger/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/actions/breakpoints.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/actions/event-listeners.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/actions/sources.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/constants.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/globalActions.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/queries.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/reducers/async-requests.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/reducers/breakpoints.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/reducers/event-listeners.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/reducers/index.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/reducers/sources.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/views/event-listeners-view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/content/views/sources-view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/debugger-commands.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/debugger/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/definitions.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/actions/filter.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/actions/grips.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/components/dom-tree.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/components/main-frame.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/components/main-toolbar.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/components/search-box.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/components/search-box.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/components/search.svg
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/constants.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/dom-decorator.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/dom-view.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/dom-view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/grip-provider.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/reducers/filter.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/reducers/grips.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/reducers/index.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/content/utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/dom-panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/dom.html
+lib/firefox/browser/chrome/devtools/modules/devtools/client/dom/main.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/eyedropper/commands.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/eyedropper/eyedropper-child.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/eyedropper/eyedropper.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/ToolboxProcess.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/about-devtools-toolbox.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/attach-thread.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/browser-menus.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/devtools-browser.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/devtools.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/gDevTools.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/menu-item.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/menu.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/selection.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/sidebar.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/source-location.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/target-from-url.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/target.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/toolbox-highlighter-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/toolbox-hosts.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/toolbox-options.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/framework/toolbox.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/breadcrumbs.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/computed/computed.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/fonts/fonts.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/inspector-commands.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/inspector-panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/inspector-search.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/layout/layout.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/markup/html-editor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/markup/markup.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/rules/models/element-style.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/rules/models/rule.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/rules/models/text-property.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/rules/rules.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/rules/views/rule-editor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/rules/views/text-property-editor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/shared/dom-node-preview.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/shared/style-inspector-menu.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/shared/style-inspector-overlays.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/inspector/shared/utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/components/headers-panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/components/headers.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/components/json-panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/components/main-tabbed-area.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/components/reps/tabs.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/components/reps/toolbar.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/components/search-box.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/components/text-panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/converter-child.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/converter-observer.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/converter-sniffer.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/controls.png
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/controls%2x.png@localhost
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/general.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/headers-panel.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/json-panel.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/main.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/read-only-prop.svg
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/search-box.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/search.svg
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/tabs.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/text-panel.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/css/toolbar.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/json-viewer.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/lib/require.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/main.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/jsonview/viewer-config.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/allocations.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/census-display.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/diffing.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/filter.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/io.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/label-display.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/refresh.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/sizes.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/snapshot.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/task-cache.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/tree-map-display.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/actions/view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/app.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/census-header.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/census-tree-item.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/census.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/dominator-tree-header.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/dominator-tree-item.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/dominator-tree.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/heap.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/individuals-header.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/individuals.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/list.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/shortest-paths.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/snapshot-list-item.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/toolbar.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/tree-map.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/tree-map/canvas-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/tree-map/color-coarse-type.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/tree-map/drag-zoom.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/tree-map/draw.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/components/tree-map/start.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/constants.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/dominator-tree-lazy-children.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/initializer.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/models.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers/allocations.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers/census-display.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers/diffing.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers/errors.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers/filter.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers/individuals.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers/label-display.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers/sizes.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers/snapshots.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers/tree-map-display.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/reducers/view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/store.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/telemetry.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/memory/utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/menus.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/netmonitor/har/har-automation.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/netmonitor/har/har-builder.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/netmonitor/har/har-collector.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/netmonitor/har/har-exporter.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/netmonitor/har/har-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/netmonitor/har/toolbox-overlay.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/netmonitor/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/components/jit-optimizations-item.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/components/jit-optimizations.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/events.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/legacy/actors.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/legacy/compatibility.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/legacy/front.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/legacy/recording.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/categories.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/constants.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/global.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/io.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/logic/frame-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/logic/jit.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/logic/telemetry.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/logic/tree-model.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/logic/waterfall-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/marker-blueprint-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/marker-dom-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/marker-formatters.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/markers.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/widgets/graphs.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/widgets/marker-details.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/widgets/marker-view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/widgets/markers-overview.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/widgets/tree-view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/modules/widgets/waterfall-ticks.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/test/helpers/actions.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/test/helpers/dom-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/test/helpers/event-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/test/helpers/input-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/test/helpers/panel-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/test/helpers/prefs.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/test/helpers/profiler-mm-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/test/helpers/synth-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/test/helpers/tab-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/test/helpers/urls.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/performance/test/helpers/wait-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/editors.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/helpers/event.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/helpers/file-picker.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/helpers/l10n.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/helpers/prompts.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/helpers/readdir.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/app-manager/app-project-editor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/app-manager/plugin.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/core.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/delete/delete.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/dirty/dirty.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/image-view/image-editor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/image-view/plugin.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/logging/logging.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/new/new.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/rename/rename.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/save/save.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/plugins/status-bar/plugin.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/project.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/projecteditor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/shells.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/stores/base.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/stores/local.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/stores/resource.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/projecteditor/lib/tree.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/actions/devices.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/actions/index.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/actions/location.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/actions/screenshot.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/actions/touch-simulation.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/actions/viewports.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/app.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/audio/camera-click.mp3
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/browser/swap.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/components/browser.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/components/device-modal.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/components/device-selector.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/components/global-toolbar.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/components/resizable-viewport.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/components/viewport-dimension.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/components/viewport-toolbar.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/components/viewport.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/components/viewports.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/constants.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/devices.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/images/close.svg
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/images/grippers.svg
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/images/rotate-viewport.svg
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/images/screenshot.svg
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/images/select-arrow.svg
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/images/touch-events.svg
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/index.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/manager.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/reducers.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/reducers/devices.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/reducers/location.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/reducers/screenshot.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/reducers/touch-simulation.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/reducers/viewports.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/responsive-ua.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/store.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/types.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/utils/e10s.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/utils/l10n.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsive.html/utils/message.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsivedesign/resize-commands.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsivedesign/responsivedesign-child.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/responsivedesign/responsivedesign.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/scratchpad/scratchpad-commands.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/scratchpad/scratchpad-manager.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/scratchpad/scratchpad-panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shadereditor/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/AppCacheUtils.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/Curl.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/DOMHelpers.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/Jsbeautify.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/SplitView.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/autocomplete-popup.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/browser-loader.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/frame.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/h-split-box.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/notification-box.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/notification-box.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/array.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/attribute.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/caption.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/date-time.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/document.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/event.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/function.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/grip-array.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/grip.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/named-node-map.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/null.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/number.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/object-box.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/object-link.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/object-with-text.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/object-with-url.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/object.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/prop-rep.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/regexp.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/rep-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/rep.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/reps.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/string.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/stylesheet.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/text-node.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/undefined.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/url.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/reps/window.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/tree.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/tree/label-cell.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/tree/object-provider.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/tree/tree-cell.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/tree/tree-header.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/tree/tree-row.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/tree/tree-view.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/components/tree/tree-view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/css-angle.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/css-color-db.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/css-color.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/css-reload.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/demangle.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/developer-toolbar.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/devices.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/devtools-file-watcher.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/doorhanger.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/file-watcher-worker.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/file-watcher.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/frame-script-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/getjson.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/inplace-editor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/key-shortcuts.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/l10n.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/node-attribute-parser.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/options-view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/output-parser.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/poller.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/prefs.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/redux/create-store.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/redux/middleware/history.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/redux/middleware/log.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/redux/middleware/promise.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/redux/middleware/task.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/redux/middleware/thunk.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/redux/middleware/wait-service.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/redux/non-react-subscriber.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/shim/Services.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/source-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/suggestion-picker.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/telemetry.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/theme-switching.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/theme.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/undo.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/vendor/immutable.js
+${PLIST.debug}lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/vendor/react-dev.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/vendor/react-dom.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/vendor/react-proxy.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/vendor/react-redux.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/vendor/react.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/vendor/redux.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/vendor/seamless-immutable.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/view-source.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/webgl-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/AbstractTreeItem.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/BarGraphWidget.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/BreadcrumbsWidget.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/Chart.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/CubicBezierPresets.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/CubicBezierWidget.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/FastListWidget.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/FilterWidget.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/FlameGraph.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/Graphs.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/GraphsWorker.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/HTMLTooltip.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/LineGraphWidget.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/MdnDocsWidget.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/MountainGraphWidget.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/SideMenuWidget.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/SimpleListWidget.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/Spectrum.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/TableWidget.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/Tooltip.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/TreeWidget.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/VariablesView.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/VariablesViewController.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/tooltip/ImageTooltipHelper.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/tooltip/TooltipToggle.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/widgets/view-helpers.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/shared/zoom-keys.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/autocomplete.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/css-autocompleter.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/debugger.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/editor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/tern/browser.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/tern/comment.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/tern/condense.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/tern/def.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/tern/ecma5.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/tern/infer.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/tern/signal.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/sourceeditor/tern/tern.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/storage/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/storage/ui.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/styleeditor/StyleEditorUI.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/styleeditor/StyleEditorUtil.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/styleeditor/StyleSheetEditor.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/client/styleeditor/styleeditor-commands.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/styleeditor/styleeditor-panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/styleeditor/utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/themes/common.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/themes/variables.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webaudioeditor/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/console-commands.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/console-output.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/hudservice.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/jsterm.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/cookies-tab.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/headers-tab.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/net-info-body.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/net-info-body.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/net-info-group-list.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/net-info-group.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/net-info-group.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/net-info-params.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/net-info-params.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/params-tab.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/post-tab.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/response-tab.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/response-tab.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/size-limit.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/size-limit.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/components/spinner.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/data-provider.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/main.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/net-request.css
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/net-request.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/utils/events.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/utils/json.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/net/utils/net.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/actions/messages.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/components/console-output.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/components/message-container.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/components/message-icon.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/components/message-repeat.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/components/message-types/console-api-call.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/components/message-types/date-preview.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/components/message-types/default-renderer.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/components/message-types/evaluation-result.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/components/message-types/page-error.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/components/variables-view-link.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/constants.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/main.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/new-console-output-wrapper.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/reducers/index.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/reducers/messages.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/selectors/messages.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/store.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/utils/messages.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/new-console-output/utils/variables-view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/panel.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webconsole/webconsole.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/addons.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/app-manager.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/app-projects.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/app-validator.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/build.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/config-view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/project-list.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/runtime-list.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/runtimes.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/simulator-process.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/simulators.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/tab-store.js
+lib/firefox/browser/chrome/devtools/modules/devtools/client/webide/modules/utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/actor-registry.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/addon.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/addons.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/animation.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/breakpoint.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/call-watcher.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/canvas.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/child-process.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/childtab.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/chrome.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/common.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/css-properties.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/csscoverage.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/device.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/director-manager.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/director-registry.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/environment.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/errordocs.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/eventlooplag.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/frame.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/framerate.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/gcli.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/heap-snapshot-file.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters.css
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters/auto-refresh.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters/box-model.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters/css-transform.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters/geometry-editor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters/measuring-tool.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters/rect.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters/rulers.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters/selector.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters/simple-outline.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/highlighters/utils/markup.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/inspector.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/layout.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/memory.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/monitor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/object.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/performance-entries.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/performance-recording.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/performance.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/preference.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/pretty-print-worker.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/process.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/profiler.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/promises.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/root.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/script.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/settings.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/source.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/storage.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/string.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/styleeditor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/styles.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/stylesheets.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/timeline.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/utils/ScriptStore.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/utils/TabSources.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/utils/actor-registry-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/utils/audionodes.json
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/utils/automation-timeline.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/utils/make-debugger.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/utils/map-uri-to-addon-id.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/utils/stack.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/utils/walker-search.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/webapps.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/webaudio.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/webbrowser.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/webconsole.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/webgl.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/actors/worker.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/child.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/content-globals.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/content-server.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/server/main.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/performance/framerate.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/performance/memory.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/performance/profiler.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/performance/recorder.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/performance/timeline.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/primitive.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/protocol.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/service-worker-child.js
+lib/firefox/browser/chrome/devtools/modules/devtools/server/worker.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/DevToolsUtils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/Loader.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/Parser.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/ThreadSafeDevToolsUtils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/apps/Devices.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/apps/Simulator.jsm
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/apps/app-actor-front.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/async-storage.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/async-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/builtin-modules.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/client/connection-manager.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/client/main.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/content-observer.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/css-lexer.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/css-parsing-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/css-properties-db.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/defer.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/deprecated-sync-thenables.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/discovery/discovery.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/dom-node-constants.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/event-emitter.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/event-parsers.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/actor-registry.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/addons.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/animation.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/call-watcher.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/canvas.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/css-properties.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/highlighters.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/inspector.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/preference.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/settings.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/storage.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/styles.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/stylesheets.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/webaudio.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/fronts/webgl.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/addon.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/appcache.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/calllog.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/cmd.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/cookie.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/csscoverage.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/folder.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/highlight.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/index.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/inject.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/jsb.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/listen.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/mdn.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/measure.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/media.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/pagemod.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/paintflashing.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/qsa.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/restart.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/rulers.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/screenshot.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/commands/security.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/cli.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/commands/clear.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/commands/commands.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/commands/context.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/commands/help.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/commands/mocks.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/commands/pref.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/commands/preflist.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/commands/test.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/connectors/connectors.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/converters/basic.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/converters/converters.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/converters/html.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/converters/terminal.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/fields/delegate.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/fields/fields.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/fields/selection.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/index.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/l10n.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/languages/command.html
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/languages/command.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/languages/javascript.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/languages/languages.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/mozui/completer.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/mozui/inputter.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/mozui/tooltip.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/settings.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/system.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/array.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/boolean.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/command.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/date.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/delegate.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/file.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/fileparser.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/javascript.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/node.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/number.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/resource.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/selection.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/setting.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/string.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/types.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/union.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/types/url.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/ui/focus.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/ui/history.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/ui/intro.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/ui/menu.css
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/ui/menu.html
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/ui/menu.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/ui/view.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/util/domtemplate.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/util/fileparser.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/util/filesystem.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/util/host.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/util/l10n.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/util/legacy.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/util/prism.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/util/spell.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/source/lib/gcli/util/util.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/gcli/templater.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/heapsnapshot/CensusUtils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/heapsnapshot/DominatorTreeNode.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/heapsnapshot/HeapAnalysesClient.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/heapsnapshot/HeapAnalysesWorker.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/heapsnapshot/HeapSnapshotFileUtils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/heapsnapshot/census-tree-node.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/heapsnapshot/shortest-paths.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/indentation.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/inspector/css-logic.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/jsbeautify/beautify.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/jsbeautify/lib/sanitytest.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/jsbeautify/lib/urlencode_unpacker.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/jsbeautify/src/beautify-css.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/jsbeautify/src/beautify-html.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/jsbeautify/src/beautify-js.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/jsbeautify/src/beautify-tests.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/layout/utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/path.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/performance/recording-common.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/performance/recording-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/pretty-fast/pretty-fast.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/protocol.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/qrcode/decoder/index.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/qrcode/encoder/index.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/qrcode/index.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/security/auth.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/security/cert.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/security/prompt.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/security/socket.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/sourcemap/source-map.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/actor-registry.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/addons.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/animation.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/call-watcher.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/canvas.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/css-properties.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/heap-snapshot-file.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/highlighters.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/inspector.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/node.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/preference.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/settings.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/storage.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/styleeditor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/styles.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/stylesheets.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/webaudio.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/specs/webgl.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/system.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/task.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/touch/simulator-content.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/touch/simulator.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/transport/packets.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/transport/stream-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/transport/transport.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/webconsole/client.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/webconsole/js-property-provider.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/webconsole/network-helper.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/webconsole/network-monitor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/webconsole/server-logger-monitor.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/webconsole/server-logger.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/webconsole/utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/webconsole/worker-utils.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/worker/helper.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/worker/loader.js
+lib/firefox/browser/chrome/devtools/modules/devtools/shared/worker/worker.js
+lib/firefox/browser/chrome/devtools/skin/animationinspector.css
+lib/firefox/browser/chrome/devtools/skin/canvasdebugger.css
+lib/firefox/browser/chrome/devtools/skin/commandline.css
+lib/firefox/browser/chrome/devtools/skin/common.css
+lib/firefox/browser/chrome/devtools/skin/components-frame.css
+lib/firefox/browser/chrome/devtools/skin/components-h-split-box.css
+lib/firefox/browser/chrome/devtools/skin/computed.css
+lib/firefox/browser/chrome/devtools/skin/dark-theme.css
+lib/firefox/browser/chrome/devtools/skin/debugger.css
+lib/firefox/browser/chrome/devtools/skin/devtools-browser.css
+lib/firefox/browser/chrome/devtools/skin/dom.css
+lib/firefox/browser/chrome/devtools/skin/eyedropper.css
+lib/firefox/browser/chrome/devtools/skin/firebug-theme.css
+lib/firefox/browser/chrome/devtools/skin/floating-scrollbars-dark-theme.css
+lib/firefox/browser/chrome/devtools/skin/floating-scrollbars-responsive-design.css
+lib/firefox/browser/chrome/devtools/skin/fonts.css
+lib/firefox/browser/chrome/devtools/skin/images/add.svg
+lib/firefox/browser/chrome/devtools/skin/images/alerticon-warning.png
+lib/firefox/browser/chrome/devtools/skin/images/alerticon-warning%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/angle-swatch.svg
+lib/firefox/browser/chrome/devtools/skin/images/animation-fast-track.svg
+lib/firefox/browser/chrome/devtools/skin/images/arrow-e.png
+lib/firefox/browser/chrome/devtools/skin/images/arrow-e%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/breadcrumbs-divider%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/breadcrumbs-scrollbutton.png
+lib/firefox/browser/chrome/devtools/skin/images/breadcrumbs-scrollbutton%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/breakpoint.svg
+lib/firefox/browser/chrome/devtools/skin/images/clear.svg
+lib/firefox/browser/chrome/devtools/skin/images/close.svg
+lib/firefox/browser/chrome/devtools/skin/images/command-console.svg
+lib/firefox/browser/chrome/devtools/skin/images/command-eyedropper.svg
+lib/firefox/browser/chrome/devtools/skin/images/command-frames.svg
+lib/firefox/browser/chrome/devtools/skin/images/command-measure.svg
+lib/firefox/browser/chrome/devtools/skin/images/command-noautohide.svg
+lib/firefox/browser/chrome/devtools/skin/images/command-paintflashing.svg
+lib/firefox/browser/chrome/devtools/skin/images/command-pick.svg
+lib/firefox/browser/chrome/devtools/skin/images/command-responsivemode.svg
+lib/firefox/browser/chrome/devtools/skin/images/command-rulers.svg
+lib/firefox/browser/chrome/devtools/skin/images/command-scratchpad.svg
+lib/firefox/browser/chrome/devtools/skin/images/command-screenshot.svg
+lib/firefox/browser/chrome/devtools/skin/images/commandline-icon.svg
+lib/firefox/browser/chrome/devtools/skin/images/controls.png
+lib/firefox/browser/chrome/devtools/skin/images/controls%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/cubic-bezier-swatch.png
+lib/firefox/browser/chrome/devtools/skin/images/cubic-bezier-swatch%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/debugger-blackbox.png
+lib/firefox/browser/chrome/devtools/skin/images/debugger-blackbox%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/debugger-pause.png
+lib/firefox/browser/chrome/devtools/skin/images/debugger-pause%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/debugger-play.png
+lib/firefox/browser/chrome/devtools/skin/images/debugger-play%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/debugger-prettyprint.png
+lib/firefox/browser/chrome/devtools/skin/images/debugger-prettyprint%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/debugger-step-in.png
+lib/firefox/browser/chrome/devtools/skin/images/debugger-step-in%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/debugger-step-out.png
+lib/firefox/browser/chrome/devtools/skin/images/debugger-step-out%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/debugger-step-over.png
+lib/firefox/browser/chrome/devtools/skin/images/debugger-step-over%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/debugger-toggleBreakpoints.svg
+lib/firefox/browser/chrome/devtools/skin/images/debugging-addons.svg
+lib/firefox/browser/chrome/devtools/skin/images/debugging-devices.svg
+lib/firefox/browser/chrome/devtools/skin/images/debugging-tabs.svg
+lib/firefox/browser/chrome/devtools/skin/images/debugging-workers.svg
+lib/firefox/browser/chrome/devtools/skin/images/diff.svg
+lib/firefox/browser/chrome/devtools/skin/images/dock-bottom.svg
+lib/firefox/browser/chrome/devtools/skin/images/dock-side.svg
+lib/firefox/browser/chrome/devtools/skin/images/dock-undock.svg
+lib/firefox/browser/chrome/devtools/skin/images/dropmarker.svg
+lib/firefox/browser/chrome/devtools/skin/images/editor-error.png
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-command-pick.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-canvas.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-debugger.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-dom.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-inspector.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-memory.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-network.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-profiler.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-scratchpad.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-shadereditor.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-storage.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-styleeditor.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-webaudio.svg
+lib/firefox/browser/chrome/devtools/skin/images/emojis/emoji-tool-webconsole.svg
+lib/firefox/browser/chrome/devtools/skin/images/fast-forward.png
+lib/firefox/browser/chrome/devtools/skin/images/fast-forward%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/filetypes/dir-close.svg
+lib/firefox/browser/chrome/devtools/skin/images/filetypes/dir-open.svg
+lib/firefox/browser/chrome/devtools/skin/images/filetypes/globe.svg
+lib/firefox/browser/chrome/devtools/skin/images/filetypes/store.svg
+lib/firefox/browser/chrome/devtools/skin/images/filter-swatch.svg
+lib/firefox/browser/chrome/devtools/skin/images/filters.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/arrow-down.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/arrow-up.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/breadcrumbs-divider.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/breakpoint.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/close.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/command-console.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/command-eyedropper.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/command-frames.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/command-measure.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/command-noautohide.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/command-paintflashing.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/command-pick.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/command-responsivemode.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/command-rulers.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/command-scratchpad.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/command-screenshot.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/commandline-icon.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/debugger-blackbox.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/debugger-prettyprint.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/debugger-step-in.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/debugger-step-out.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/debugger-step-over.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/debugger-toggleBreakpoints.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/disable.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/dock-bottom.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/dock-side.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/dock-undock.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/filter.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/pane-collapse.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/pane-expand.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/pause.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/play.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/read-only.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/rewind.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/spinner.png
+lib/firefox/browser/chrome/devtools/skin/images/firebug/timeline-filter.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/tool-debugger-paused.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/tool-options.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/twisty-closed-firebug.svg
+lib/firefox/browser/chrome/devtools/skin/images/firebug/twisty-open-firebug.svg
+lib/firefox/browser/chrome/devtools/skin/images/geometry-editor.svg
+lib/firefox/browser/chrome/devtools/skin/images/itemArrow-dark-ltr.svg
+lib/firefox/browser/chrome/devtools/skin/images/itemArrow-dark-rtl.svg
+lib/firefox/browser/chrome/devtools/skin/images/itemArrow-ltr.svg
+lib/firefox/browser/chrome/devtools/skin/images/itemArrow-rtl.svg
+lib/firefox/browser/chrome/devtools/skin/images/itemToggle.png
+lib/firefox/browser/chrome/devtools/skin/images/itemToggle%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/magnifying-glass-light.png
+lib/firefox/browser/chrome/devtools/skin/images/magnifying-glass-light%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/magnifying-glass.png
+lib/firefox/browser/chrome/devtools/skin/images/magnifying-glass%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/noise.png
+lib/firefox/browser/chrome/devtools/skin/images/pane-collapse.svg
+lib/firefox/browser/chrome/devtools/skin/images/pane-expand.svg
+lib/firefox/browser/chrome/devtools/skin/images/performance-icons.svg
+lib/firefox/browser/chrome/devtools/skin/images/power.svg
+lib/firefox/browser/chrome/devtools/skin/images/profiler-stopwatch.svg
+lib/firefox/browser/chrome/devtools/skin/images/pseudo-class.svg
+lib/firefox/browser/chrome/devtools/skin/images/reload.svg
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsive-horizontal-resizer.png
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsive-horizontal-resizer%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsive-se-resizer.png
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsive-se-resizer%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsive-vertical-resizer.png
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsive-vertical-resizer%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsiveui-home.png
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsiveui-rotate.png
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsiveui-rotate%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsiveui-screenshot.png
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsiveui-screenshot%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsiveui-touch.png
+lib/firefox/browser/chrome/devtools/skin/images/responsivemode/responsiveui-touch%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/rewind.png
+lib/firefox/browser/chrome/devtools/skin/images/rewind%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/search-clear-dark.svg
+lib/firefox/browser/chrome/devtools/skin/images/search-clear-failed.svg
+lib/firefox/browser/chrome/devtools/skin/images/search-clear-light.svg
+lib/firefox/browser/chrome/devtools/skin/images/security-state-broken.svg
+lib/firefox/browser/chrome/devtools/skin/images/security-state-insecure.svg
+lib/firefox/browser/chrome/devtools/skin/images/security-state-local.svg
+lib/firefox/browser/chrome/devtools/skin/images/security-state-secure.svg
+lib/firefox/browser/chrome/devtools/skin/images/security-state-weak.svg
+lib/firefox/browser/chrome/devtools/skin/images/sort-arrows.svg
+lib/firefox/browser/chrome/devtools/skin/images/tabs-icon.svg
+lib/firefox/browser/chrome/devtools/skin/images/timeline-filter.svg
+lib/firefox/browser/chrome/devtools/skin/images/toggle-tools.png
+lib/firefox/browser/chrome/devtools/skin/images/toggle-tools%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/tool-canvas.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-debugger-paused.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-debugger.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-dom.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-inspector.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-memory-active.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-memory.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-network.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-options.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-profiler-active.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-profiler.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-scratchpad.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-shadereditor.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-storage.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-styleeditor.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-webaudio.svg
+lib/firefox/browser/chrome/devtools/skin/images/tool-webconsole.svg
+lib/firefox/browser/chrome/devtools/skin/images/tracer-icon.png
+lib/firefox/browser/chrome/devtools/skin/images/tracer-icon%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/vview-delete.png
+lib/firefox/browser/chrome/devtools/skin/images/vview-delete%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/vview-edit.png
+lib/firefox/browser/chrome/devtools/skin/images/vview-edit%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/vview-lock.png
+lib/firefox/browser/chrome/devtools/skin/images/vview-lock%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/vview-open-inspector.png
+lib/firefox/browser/chrome/devtools/skin/images/vview-open-inspector%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/images/webconsole.svg
+lib/firefox/browser/chrome/devtools/skin/inspector.css
+lib/firefox/browser/chrome/devtools/skin/jit-optimizations.css
+lib/firefox/browser/chrome/devtools/skin/layout.css
+lib/firefox/browser/chrome/devtools/skin/light-theme.css
+lib/firefox/browser/chrome/devtools/skin/markup.css
+lib/firefox/browser/chrome/devtools/skin/memory.css
+lib/firefox/browser/chrome/devtools/skin/netmonitor.css
+lib/firefox/browser/chrome/devtools/skin/performance.css
+lib/firefox/browser/chrome/devtools/skin/projecteditor/projecteditor.css
+lib/firefox/browser/chrome/devtools/skin/promisedebugger.css
+lib/firefox/browser/chrome/devtools/skin/rules.css
+lib/firefox/browser/chrome/devtools/skin/scratchpad.css
+lib/firefox/browser/chrome/devtools/skin/shadereditor.css
+lib/firefox/browser/chrome/devtools/skin/spectrum.css
+lib/firefox/browser/chrome/devtools/skin/splitters.css
+lib/firefox/browser/chrome/devtools/skin/splitview.css
+lib/firefox/browser/chrome/devtools/skin/storage.css
+lib/firefox/browser/chrome/devtools/skin/styleeditor.css
+lib/firefox/browser/chrome/devtools/skin/toolbars.css
+lib/firefox/browser/chrome/devtools/skin/tooltip/arrow-horizontal-dark.png
+lib/firefox/browser/chrome/devtools/skin/tooltip/arrow-horizontal-dark%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/tooltip/arrow-horizontal-light.png
+lib/firefox/browser/chrome/devtools/skin/tooltip/arrow-horizontal-light%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/tooltip/arrow-vertical-dark.png
+lib/firefox/browser/chrome/devtools/skin/tooltip/arrow-vertical-dark%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/tooltip/arrow-vertical-light.png
+lib/firefox/browser/chrome/devtools/skin/tooltip/arrow-vertical-light%2x.png@localhost
+lib/firefox/browser/chrome/devtools/skin/variables.css
+lib/firefox/browser/chrome/devtools/skin/webaudioeditor.css
+lib/firefox/browser/chrome/devtools/skin/webconsole.css
+lib/firefox/browser/chrome/devtools/skin/widgets.css
+lib/firefox/browser/chrome/en-US/locale/branding/brand.dtd
+lib/firefox/browser/chrome/en-US/locale/branding/brand.properties
+lib/firefox/browser/chrome/en-US/locale/branding/browserconfig.properties
+lib/firefox/browser/chrome/en-US/locale/browser-region/region.properties
+lib/firefox/browser/chrome/en-US/locale/browser/aboutAccounts.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/aboutDialog.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/aboutHealthReport.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/aboutHome.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/aboutPrivateBrowsing.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/aboutPrivateBrowsing.properties
+lib/firefox/browser/chrome/en-US/locale/browser/aboutRobots.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/aboutSearchReset.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/aboutSessionRestore.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/aboutSyncTabs.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/aboutTabCrashed.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/accounts.properties
+lib/firefox/browser/chrome/en-US/locale/browser/appstrings.properties
+lib/firefox/browser/chrome/en-US/locale/browser/baseMenuOverlay.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/bookmarks.html
+lib/firefox/browser/chrome/en-US/locale/browser/browser.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/browser.properties
+lib/firefox/browser/chrome/en-US/locale/browser/customizableui/customizableWidgets.properties
+lib/firefox/browser/chrome/en-US/locale/browser/downloads/downloads.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/downloads/downloads.properties
+lib/firefox/browser/chrome/en-US/locale/browser/downloads/settingsChange.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/engineManager.properties
+lib/firefox/browser/chrome/en-US/locale/browser/feeds/subscribe.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/feeds/subscribe.properties
+lib/firefox/browser/chrome/en-US/locale/browser/lightweightThemes.properties
+lib/firefox/browser/chrome/en-US/locale/browser/loop/loop.properties
+lib/firefox/browser/chrome/en-US/locale/browser/migration/migration.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/migration/migration.properties
+lib/firefox/browser/chrome/en-US/locale/browser/netError.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/newTab.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/newTab.properties
+lib/firefox/browser/chrome/en-US/locale/browser/pageInfo.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/pageInfo.properties
+lib/firefox/browser/chrome/en-US/locale/browser/places/bookmarkProperties.properties
+lib/firefox/browser/chrome/en-US/locale/browser/places/editBookmarkOverlay.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/places/moveBookmarks.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/places/places.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/places/places.properties
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/advanced.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/applicationManager.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/applicationManager.properties
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/applications.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/blocklists.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/colors.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/connection.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/content.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/cookies.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/donottrack.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/fonts.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/languages.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/main.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/permissions.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/preferences.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/preferences.properties
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/privacy.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/search.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/security.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/selectBookmark.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/sync.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/tabs.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/preferences/translation.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/quitDialog.properties
+lib/firefox/browser/chrome/en-US/locale/browser/safeMode.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/safebrowsing/phishing-afterload-warning-message.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/safebrowsing/report-phishing.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/sanitize.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/search.properties
+lib/firefox/browser/chrome/en-US/locale/browser/searchbar.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/searchplugins/amazondotcom.xml
+lib/firefox/browser/chrome/en-US/locale/browser/searchplugins/bing.xml
+lib/firefox/browser/chrome/en-US/locale/browser/searchplugins/ddg.xml
+lib/firefox/browser/chrome/en-US/locale/browser/searchplugins/google-nocodes.xml
+lib/firefox/browser/chrome/en-US/locale/browser/searchplugins/google.xml
+lib/firefox/browser/chrome/en-US/locale/browser/searchplugins/list.txt
+lib/firefox/browser/chrome/en-US/locale/browser/searchplugins/twitter.xml
+lib/firefox/browser/chrome/en-US/locale/browser/searchplugins/wikipedia.xml
+lib/firefox/browser/chrome/en-US/locale/browser/searchplugins/yahoo-en-CA.xml
+lib/firefox/browser/chrome/en-US/locale/browser/searchplugins/yahoo.xml
+lib/firefox/browser/chrome/en-US/locale/browser/setDesktopBackground.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/shellservice.properties
+lib/firefox/browser/chrome/en-US/locale/browser/sitePermissions.properties
+lib/firefox/browser/chrome/en-US/locale/browser/syncBrand.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/syncCustomize.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/syncGenericChange.properties
+lib/firefox/browser/chrome/en-US/locale/browser/syncKey.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/syncQuota.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/syncQuota.properties
+lib/firefox/browser/chrome/en-US/locale/browser/syncSetup.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/syncSetup.properties
+lib/firefox/browser/chrome/en-US/locale/browser/tabbrowser.properties
+lib/firefox/browser/chrome/en-US/locale/browser/taskbar.properties
+lib/firefox/browser/chrome/en-US/locale/browser/translation.dtd
+lib/firefox/browser/chrome/en-US/locale/browser/translation.properties
+lib/firefox/browser/chrome/en-US/locale/browser/webrtcIndicator.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/VariablesView.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/aboutdebugging.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/aboutdebugging.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/animationinspector.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/animationinspector.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/app-manager.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/appcacheutils.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/canvasdebugger.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/canvasdebugger.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/components.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/connection-screen.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/connection-screen.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/debugger.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/debugger.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/device.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/dom.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/eyedropper.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/filterwidget.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/filterwidget.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/font-inspector.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/graphs.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/har.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/inspector.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/inspector.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/jit-optimizations.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/jsonview.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/layoutview.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/markers.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/memory.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/menus.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/netmonitor.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/netmonitor.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/performance.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/performance.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/projecteditor.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/promisedebugger.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/promisedebugger.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/responsive.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/responsiveUI.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/scratchpad.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/scratchpad.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/shadereditor.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/shadereditor.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/shared.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/sourceeditor.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/sourceeditor.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/storage.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/storage.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/styleeditor.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/styleeditor.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/styleinspector.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/toolbox.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/toolbox.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/webConsole.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/webaudioeditor.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/webaudioeditor.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/webconsole.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/webide.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/client/webide.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/shared/csscoverage.dtd
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/shared/csscoverage.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/shared/debugger.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/shared/gcli.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/shared/gclicommands.properties
+lib/firefox/browser/chrome/en-US/locale/en-US/devtools/shared/styleinspector.properties
+lib/firefox/browser/chrome/en-US/locale/pdfviewer/chrome.properties
+lib/firefox/browser/chrome/en-US/locale/pdfviewer/viewer.properties
+lib/firefox/browser/chrome/icons/default/default16.png
+lib/firefox/browser/chrome/icons/default/default32.png
+lib/firefox/browser/chrome/icons/default/default48.png
+lib/firefox/browser/chrome/pdfjs/content/PdfJs.jsm
+lib/firefox/browser/chrome/pdfjs/content/PdfJsTelemetry.jsm
+lib/firefox/browser/chrome/pdfjs/content/PdfStreamConverter.jsm
+lib/firefox/browser/chrome/pdfjs/content/PdfjsChromeUtils.jsm
+lib/firefox/browser/chrome/pdfjs/content/PdfjsContentUtils.jsm
+lib/firefox/browser/chrome/pdfjs/content/build/pdf.js
+lib/firefox/browser/chrome/pdfjs/content/build/pdf.worker.js
+lib/firefox/browser/chrome/pdfjs/content/network.js
+lib/firefox/browser/chrome/pdfjs/content/pdfjschildbootstrap.js
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/78-EUC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/78-EUC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/78-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/78-RKSJ-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/78-RKSJ-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/78-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/78ms-RKSJ-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/78ms-RKSJ-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/83pv-RKSJ-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/90ms-RKSJ-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/90ms-RKSJ-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/90msp-RKSJ-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/90msp-RKSJ-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/90pv-RKSJ-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/90pv-RKSJ-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Add-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Add-RKSJ-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Add-RKSJ-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Add-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-0.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-1.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-2.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-3.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-4.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-5.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-6.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-UCS2.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-0.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-1.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-2.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-3.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-4.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-5.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-UCS2.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-0.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-1.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-2.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-3.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-4.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-5.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-6.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-UCS2.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Korea1-0.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Korea1-1.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Korea1-2.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Adobe-Korea1-UCS2.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/B5-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/B5-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/B5pc-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/B5pc-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/CNS-EUC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/CNS-EUC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/CNS1-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/CNS1-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/CNS2-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/CNS2-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/ETHK-B5-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/ETHK-B5-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/ETen-B5-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/ETen-B5-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/ETenms-B5-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/ETenms-B5-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/EUC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/EUC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Ext-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Ext-RKSJ-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Ext-RKSJ-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Ext-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GB-EUC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GB-EUC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GB-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GB-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBK-EUC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBK-EUC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBK2K-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBK2K-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBKp-EUC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBKp-EUC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBT-EUC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBT-EUC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBT-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBT-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBTpc-EUC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBTpc-EUC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBpc-EUC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/GBpc-EUC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKdla-B5-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKdla-B5-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKdlb-B5-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKdlb-B5-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKgccs-B5-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKgccs-B5-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKm314-B5-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKm314-B5-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKm471-B5-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKm471-B5-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKscs-B5-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/HKscs-B5-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Hankaku.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Hiragana.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSC-EUC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSC-EUC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSC-Johab-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSC-Johab-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSCms-UHC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSCms-UHC-HW-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSCms-UHC-HW-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSCms-UHC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSCpc-EUC-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/KSCpc-EUC-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Katakana.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/LICENSE
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/NWP-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/NWP-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/RKSJ-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/RKSJ-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/Roman.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UCS2-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UCS2-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF16-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF16-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF32-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF32-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF8-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF8-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniGB-UCS2-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniGB-UCS2-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF16-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF16-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF32-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF32-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF8-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF8-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UCS2-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UCS2-HW-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UCS2-HW-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UCS2-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF16-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF16-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF32-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF32-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF8-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF8-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF16-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF16-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF32-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF32-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF8-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF8-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJISPro-UCS2-HW-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJISPro-UCS2-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJISPro-UTF8-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJISX0213-UTF32-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJISX0213-UTF32-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJISX02132004-UTF32-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniJISX02132004-UTF32-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniKS-UCS2-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniKS-UCS2-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF16-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF16-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF32-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF32-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF8-H.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF8-V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/V.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/cmaps/WP-Symbol.bcmap
+lib/firefox/browser/chrome/pdfjs/content/web/debugger.js
+lib/firefox/browser/chrome/pdfjs/content/web/images/annotation-check.svg
+lib/firefox/browser/chrome/pdfjs/content/web/images/annotation-comment.svg
+lib/firefox/browser/chrome/pdfjs/content/web/images/annotation-help.svg
+lib/firefox/browser/chrome/pdfjs/content/web/images/annotation-insert.svg
+lib/firefox/browser/chrome/pdfjs/content/web/images/annotation-key.svg
+lib/firefox/browser/chrome/pdfjs/content/web/images/annotation-newparagraph.svg
+lib/firefox/browser/chrome/pdfjs/content/web/images/annotation-noicon.svg
+lib/firefox/browser/chrome/pdfjs/content/web/images/annotation-note.svg
+lib/firefox/browser/chrome/pdfjs/content/web/images/annotation-paragraph.svg
+lib/firefox/browser/chrome/pdfjs/content/web/images/findbarButton-next-rtl.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/findbarButton-next-rtl%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/findbarButton-next.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/findbarButton-next%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/findbarButton-previous-rtl.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/findbarButton-previous-rtl%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/findbarButton-previous.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/findbarButton-previous%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/grab.cur
+lib/firefox/browser/chrome/pdfjs/content/web/images/grabbing.cur
+lib/firefox/browser/chrome/pdfjs/content/web/images/loading-icon.gif
+lib/firefox/browser/chrome/pdfjs/content/web/images/loading-small.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/loading-small%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-documentProperties.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-documentProperties%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-firstPage.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-firstPage%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-handTool.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-handTool%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-lastPage.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-lastPage%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-rotateCcw.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-rotateCcw%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-rotateCw.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-rotateCw%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/shadow.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/texture.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-bookmark.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-bookmark%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-download.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-download%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-menuArrows.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-menuArrows%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-openFile.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-openFile%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-pageDown-rtl.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-pageDown-rtl%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-pageDown.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-pageDown%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-pageUp-rtl.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-pageUp-rtl%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-pageUp.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-pageUp%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-presentationMode.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-presentationMode%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-print.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-print%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-search.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-search%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-secondaryToolbarToggle-rtl.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-secondaryToolbarToggle-rtl%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-secondaryToolbarToggle.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-secondaryToolbarToggle%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-sidebarToggle-rtl.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-sidebarToggle-rtl%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-sidebarToggle.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-sidebarToggle%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-viewAttachments.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-viewAttachments%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-viewOutline-rtl.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-viewOutline-rtl%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-viewOutline.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-viewOutline%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-viewThumbnail.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-viewThumbnail%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-zoomIn.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-zoomIn%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-zoomOut.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/toolbarButton-zoomOut%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/treeitem-collapsed-rtl.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/treeitem-collapsed-rtl%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/treeitem-collapsed.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/treeitem-collapsed%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/images/treeitem-expanded.png
+lib/firefox/browser/chrome/pdfjs/content/web/images/treeitem-expanded%2x.png@localhost
+lib/firefox/browser/chrome/pdfjs/content/web/l10n.js
+lib/firefox/browser/chrome/pdfjs/content/web/viewer.css
+lib/firefox/browser/chrome/pdfjs/content/web/viewer.html
+lib/firefox/browser/chrome/pdfjs/content/web/viewer.js
+lib/firefox/browser/chrome/webide/content/addons.js
+lib/firefox/browser/chrome/webide/content/addons.xhtml
+lib/firefox/browser/chrome/webide/content/details.js
+lib/firefox/browser/chrome/webide/content/details.xhtml
+lib/firefox/browser/chrome/webide/content/devicepreferences.js
+lib/firefox/browser/chrome/webide/content/devicepreferences.xhtml
+lib/firefox/browser/chrome/webide/content/devicesettings.js
+lib/firefox/browser/chrome/webide/content/devicesettings.xhtml
+lib/firefox/browser/chrome/webide/content/logs.js
+lib/firefox/browser/chrome/webide/content/logs.xhtml
+lib/firefox/browser/chrome/webide/content/monitor.js
+lib/firefox/browser/chrome/webide/content/monitor.xhtml
+lib/firefox/browser/chrome/webide/content/newapp.js
+lib/firefox/browser/chrome/webide/content/newapp.xul
+lib/firefox/browser/chrome/webide/content/permissionstable.js
+lib/firefox/browser/chrome/webide/content/permissionstable.xhtml
+lib/firefox/browser/chrome/webide/content/prefs.js
+lib/firefox/browser/chrome/webide/content/prefs.xhtml
+lib/firefox/browser/chrome/webide/content/project-listing.js
+lib/firefox/browser/chrome/webide/content/project-listing.xhtml
+lib/firefox/browser/chrome/webide/content/project-panel.js
+lib/firefox/browser/chrome/webide/content/runtime-listing.js
+lib/firefox/browser/chrome/webide/content/runtime-listing.xhtml
+lib/firefox/browser/chrome/webide/content/runtime-panel.js
+lib/firefox/browser/chrome/webide/content/runtimedetails.js
+lib/firefox/browser/chrome/webide/content/runtimedetails.xhtml
+lib/firefox/browser/chrome/webide/content/simulator.js
+lib/firefox/browser/chrome/webide/content/simulator.xhtml
+lib/firefox/browser/chrome/webide/content/webide.js
+lib/firefox/browser/chrome/webide/content/webide.xul
+lib/firefox/browser/chrome/webide/content/wifi-auth.js
+lib/firefox/browser/chrome/webide/content/wifi-auth.xhtml
+lib/firefox/browser/chrome/webide/skin/addons.css
+lib/firefox/browser/chrome/webide/skin/config-view.css
+lib/firefox/browser/chrome/webide/skin/deck.css
+lib/firefox/browser/chrome/webide/skin/default-app-icon.png
+lib/firefox/browser/chrome/webide/skin/details.css
+lib/firefox/browser/chrome/webide/skin/icons.png
+lib/firefox/browser/chrome/webide/skin/logs.css
+lib/firefox/browser/chrome/webide/skin/monitor.css
+lib/firefox/browser/chrome/webide/skin/newapp.css
+lib/firefox/browser/chrome/webide/skin/noise.png
+lib/firefox/browser/chrome/webide/skin/panel-listing.css
+lib/firefox/browser/chrome/webide/skin/permissionstable.css
+lib/firefox/browser/chrome/webide/skin/rocket.svg
+lib/firefox/browser/chrome/webide/skin/runtimedetails.css
+lib/firefox/browser/chrome/webide/skin/simulator.css
+lib/firefox/browser/chrome/webide/skin/throbber.svg
+lib/firefox/browser/chrome/webide/skin/webide.css
+lib/firefox/browser/chrome/webide/skin/wifi-auth.css
+lib/firefox/browser/components/ChromeProfileMigrator.js
+lib/firefox/browser/components/ExperimentsService.js
+lib/firefox/browser/components/FeedConverter.js
+lib/firefox/browser/components/FeedWriter.js
+lib/firefox/browser/components/FirefoxProfileMigrator.js
+lib/firefox/browser/components/ProfileMigrator.js
+lib/firefox/browser/components/SelfSupportService.js
+lib/firefox/browser/components/WebContentConverter.js
+lib/firefox/browser/components/aboutNewTabService.js
+lib/firefox/browser/components/components.manifest
+lib/firefox/browser/components/devtools-startup.js
+lib/firefox/browser/components/interfaces.xpt
+lib/firefox/browser/components/libbrowsercomps.so
+lib/firefox/browser/components/nsBrowserContentHandler.js
+lib/firefox/browser/components/nsBrowserGlue.js
+lib/firefox/browser/components/nsSessionStartup.js
+lib/firefox/browser/components/nsSessionStore.js
+lib/firefox/browser/components/nsSetDefaultBrowser.js
+lib/firefox/browser/components/webideCli.js
+lib/firefox/browser/defaults/permissions
+lib/firefox/browser/defaults/preferences/devtools.js
+lib/firefox/browser/defaults/preferences/firefox-branding.js
+lib/firefox/browser/defaults/preferences/firefox-l10n.js
+lib/firefox/browser/defaults/preferences/firefox.js
+lib/firefox/browser/defaults/preferences/webide-prefs.js
+lib/firefox/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome.manifest
+lib/firefox/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
+lib/firefox/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
+lib/firefox/browser/features/e10srollout%mozilla.org@localhost/bootstrap.js
+lib/firefox/browser/features/e10srollout%mozilla.org@localhost/install.rdf
+lib/firefox/browser/features/firefox%getpocket.com@localhost/bootstrap.js
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome.manifest
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/Pocket.jsm
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/main.js
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/css/firasans.css
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/css/normalize.css
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/css/saved.css
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/css/signup.css
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/fonts/FiraSans-Regular.woff
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocket.svg
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketerror%1x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketerror%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketlogo%1x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketlogo%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketlogosolo%1x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketlogosolo%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketmenuitem16.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketmenuitem16%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketsignup_button%1x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketsignup_button%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketsignup_devices%1x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketsignup_devices%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketsignup_hero%1x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/pocketsignup_hero%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/signup_firefoxlogo%1x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/signup_firefoxlogo%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/signup_help%1x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/signup_help%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/signup_or%1x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/signup_or%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/tag_close%1x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/tag_close%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/tag_closeactive%1x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/img/tag_closeactive%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/js/messages.js
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/js/saved.js
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/js/signup.js
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/js/tmpl.js
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/js/vendor/handlebars.runtime.js
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/js/vendor/jquery-2.1.1.min.js
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/js/vendor/jquery.tokeninput.min.js
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/license.txt
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/saved.html
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/signup.html
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/tmpl/saved_premiumextras.handlebars
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/tmpl/saved_premiumshell.handlebars
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/tmpl/saved_shell.handlebars
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/tmpl/signup_shell.handlebars
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/panels/tmpl/signupstoryboard_shell.handlebars
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/content/pktApi.jsm
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/linux/Toolbar-inverted.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/linux/Toolbar.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/linux/menuPanel.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/linux/menuPanel%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/linux/pocket.css
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/osx/Toolbar-inverted.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/osx/Toolbar-inverted%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/osx/Toolbar-yosemite.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/osx/Toolbar-yosemite%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/osx/Toolbar.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/osx/Toolbar%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/osx/menuPanel-yosemite.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/osx/menuPanel-yosemite%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/osx/menuPanel.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/osx/menuPanel%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/osx/pocket.css
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/shared/pocket.css
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/Toolbar-XP.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/Toolbar-aero.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/Toolbar-aero%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/Toolbar-inverted.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/Toolbar-inverted%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/Toolbar-lunaSilver.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/Toolbar-win8.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/Toolbar-win8%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/Toolbar.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/Toolbar%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/menuPanel-aero.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/menuPanel-aero%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/menuPanel.png
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/menuPanel%2x.png@localhost
+lib/firefox/browser/features/firefox%getpocket.com@localhost/chrome/skin/windows/pocket.css
+lib/firefox/browser/features/firefox%getpocket.com@localhost/en-US/locale/en-US/pocket.properties
+lib/firefox/browser/features/firefox%getpocket.com@localhost/install.rdf
+lib/firefox/browser/features/webcompat%mozilla.org@localhost/bootstrap.js
+lib/firefox/browser/features/webcompat%mozilla.org@localhost/install.rdf
+lib/firefox/browser/icons/mozicon128.png
+lib/firefox/browser/modules/AboutHome.jsm
+lib/firefox/browser/modules/AboutNewTab.jsm
+lib/firefox/browser/modules/AutoMigrate.jsm
+lib/firefox/browser/modules/BrowserUITelemetry.jsm
+lib/firefox/browser/modules/CastingApps.jsm
+lib/firefox/browser/modules/Chat.jsm
+lib/firefox/browser/modules/ContentClick.jsm
+lib/firefox/browser/modules/ContentCrashHandlers.jsm
+lib/firefox/browser/modules/ContentLinkHandler.jsm
+lib/firefox/browser/modules/ContentObservers.jsm
+lib/firefox/browser/modules/ContentSearch.jsm
+lib/firefox/browser/modules/ContentWebRTC.jsm
+lib/firefox/browser/modules/ContextualIdentityService.jsm
+lib/firefox/browser/modules/CustomizableUI.jsm
+lib/firefox/browser/modules/CustomizableWidgets.jsm
+lib/firefox/browser/modules/CustomizeMode.jsm
+lib/firefox/browser/modules/DirectoryLinksProvider.jsm
+lib/firefox/browser/modules/DownloadsCommon.jsm
+lib/firefox/browser/modules/DownloadsTaskbar.jsm
+lib/firefox/browser/modules/DownloadsViewUI.jsm
+lib/firefox/browser/modules/DragPositionManager.jsm
+lib/firefox/browser/modules/E10SUtils.jsm
+lib/firefox/browser/modules/Feeds.jsm
+lib/firefox/browser/modules/FormSubmitObserver.jsm
+lib/firefox/browser/modules/FormValidationHandler.jsm
+lib/firefox/browser/modules/HiddenFrame.jsm
+lib/firefox/browser/modules/LaterRun.jsm
+lib/firefox/browser/modules/MigrationUtils.jsm
+lib/firefox/browser/modules/NetworkPrioritizer.jsm
+lib/firefox/browser/modules/NewTabMessages.jsm
+lib/firefox/browser/modules/NewTabPrefsProvider.jsm
+lib/firefox/browser/modules/NewTabRemoteResources.jsm
+lib/firefox/browser/modules/NewTabSearchProvider.jsm
+lib/firefox/browser/modules/NewTabURL.jsm
+lib/firefox/browser/modules/NewTabWebChannel.jsm
+lib/firefox/browser/modules/PanelFrame.jsm
+lib/firefox/browser/modules/PanelWideWidgetTracker.jsm
+lib/firefox/browser/modules/PlacesProvider.jsm
+lib/firefox/browser/modules/PlacesUIUtils.jsm
+lib/firefox/browser/modules/PluginContent.jsm
+lib/firefox/browser/modules/PreviewProvider.jsm
+lib/firefox/browser/modules/ProcessHangMonitor.jsm
+lib/firefox/browser/modules/ReaderParent.jsm
+lib/firefox/browser/modules/RecentWindow.jsm
+lib/firefox/browser/modules/RemotePrompt.jsm
+lib/firefox/browser/modules/Sanitizer.jsm
+lib/firefox/browser/modules/ScrollbarSampler.jsm
+lib/firefox/browser/modules/SelfSupportBackend.jsm
+lib/firefox/browser/modules/ShellService.jsm
+lib/firefox/browser/modules/SitePermissions.jsm
+lib/firefox/browser/modules/Social.jsm
+lib/firefox/browser/modules/TabGroupsMigrator.jsm
+lib/firefox/browser/modules/TransientPrefs.jsm
+lib/firefox/browser/modules/UITour.jsm
+lib/firefox/browser/modules/devtools/client/framework/gDevTools.jsm
+lib/firefox/browser/modules/devtools/gDevTools.jsm
+lib/firefox/browser/modules/distribution.js
+lib/firefox/browser/modules/experiments/Experiments.jsm
+lib/firefox/browser/modules/offlineAppCache.jsm
+lib/firefox/browser/modules/sessionstore/ContentRestore.jsm
+lib/firefox/browser/modules/sessionstore/DocShellCapabilities.jsm
+lib/firefox/browser/modules/sessionstore/FrameTree.jsm
+lib/firefox/browser/modules/sessionstore/GlobalState.jsm
+lib/firefox/browser/modules/sessionstore/PageStyle.jsm
+lib/firefox/browser/modules/sessionstore/PrivacyFilter.jsm
+lib/firefox/browser/modules/sessionstore/PrivacyLevel.jsm
+lib/firefox/browser/modules/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.jsm
+lib/firefox/browser/modules/sessionstore/RunState.jsm
+lib/firefox/browser/modules/sessionstore/SessionCookies.jsm
+lib/firefox/browser/modules/sessionstore/SessionFile.jsm
+lib/firefox/browser/modules/sessionstore/SessionHistory.jsm
+lib/firefox/browser/modules/sessionstore/SessionMigration.jsm
+lib/firefox/browser/modules/sessionstore/SessionSaver.jsm
+lib/firefox/browser/modules/sessionstore/SessionStorage.jsm
+lib/firefox/browser/modules/sessionstore/SessionStore.jsm
+lib/firefox/browser/modules/sessionstore/SessionWorker.js
+lib/firefox/browser/modules/sessionstore/SessionWorker.jsm
+lib/firefox/browser/modules/sessionstore/StartupPerformance.jsm
+lib/firefox/browser/modules/sessionstore/TabAttributes.jsm
+lib/firefox/browser/modules/sessionstore/TabState.jsm
+lib/firefox/browser/modules/sessionstore/TabStateCache.jsm
+lib/firefox/browser/modules/sessionstore/TabStateFlusher.jsm
+lib/firefox/browser/modules/sessionstore/Utils.jsm
+lib/firefox/browser/modules/syncedtabs/EventEmitter.jsm
+lib/firefox/browser/modules/syncedtabs/SyncedTabsDeckComponent.js
+lib/firefox/browser/modules/syncedtabs/SyncedTabsDeckStore.js
+lib/firefox/browser/modules/syncedtabs/SyncedTabsDeckView.js
+lib/firefox/browser/modules/syncedtabs/SyncedTabsListStore.js
+lib/firefox/browser/modules/syncedtabs/TabListComponent.js
+lib/firefox/browser/modules/syncedtabs/TabListView.js
+lib/firefox/browser/modules/syncedtabs/util.js
+lib/firefox/browser/modules/translation/BingTranslator.jsm
+lib/firefox/browser/modules/translation/LanguageDetector.jsm
+lib/firefox/browser/modules/translation/Translation.jsm
+lib/firefox/browser/modules/translation/TranslationContentHandler.jsm
+lib/firefox/browser/modules/translation/TranslationDocument.jsm
+lib/firefox/browser/modules/translation/YandexTranslator.jsm
+lib/firefox/browser/modules/translation/cld-worker.js
+lib/firefox/browser/modules/translation/cld-worker.js.mem
+lib/firefox/browser/modules/webrtcUI.jsm
+lib/firefox/chrome.manifest
+lib/firefox/chrome/chrome.manifest
+lib/firefox/chrome/en-US/locale/en-US/alerts/alert.dtd
+lib/firefox/chrome/en-US/locale/en-US/alerts/alert.properties
+lib/firefox/chrome/en-US/locale/en-US/autoconfig/autoconfig.properties
+lib/firefox/chrome/en-US/locale/en-US/cookie/cookieAcceptDialog.dtd
+lib/firefox/chrome/en-US/locale/en-US/cookie/cookieAcceptDialog.properties
+lib/firefox/chrome/en-US/locale/en-US/formautofill/requestAutocomplete.dtd
+lib/firefox/chrome/en-US/locale/en-US/global-platform/mac/accessible.properties
+lib/firefox/chrome/en-US/locale/en-US/global-platform/mac/intl.properties
+lib/firefox/chrome/en-US/locale/en-US/global-platform/mac/platformKeys.properties
+lib/firefox/chrome/en-US/locale/en-US/global-platform/unix/accessible.properties
+lib/firefox/chrome/en-US/locale/en-US/global-platform/unix/intl.properties
+lib/firefox/chrome/en-US/locale/en-US/global-platform/unix/platformKeys.properties
+lib/firefox/chrome/en-US/locale/en-US/global-platform/win/accessible.properties
+lib/firefox/chrome/en-US/locale/en-US/global-platform/win/intl.properties
+lib/firefox/chrome/en-US/locale/en-US/global-platform/win/platformKeys.properties
+lib/firefox/chrome/en-US/locale/en-US/global-region/region.properties
+lib/firefox/chrome/en-US/locale/en-US/global/AccessFu.properties
+lib/firefox/chrome/en-US/locale/en-US/global/about.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/aboutAbout.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/aboutNetworking.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/aboutProfiles.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/aboutProfiles.properties
+lib/firefox/chrome/en-US/locale/en-US/global/aboutReader.properties
+lib/firefox/chrome/en-US/locale/en-US/global/aboutRights.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/aboutServiceWorkers.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/aboutServiceWorkers.properties
+lib/firefox/chrome/en-US/locale/en-US/global/aboutSupport.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/aboutSupport.properties
+lib/firefox/chrome/en-US/locale/en-US/global/aboutTelemetry.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/aboutTelemetry.properties
+lib/firefox/chrome/en-US/locale/en-US/global/aboutWebrtc.properties
+lib/firefox/chrome/en-US/locale/en-US/global/appPicker.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/appstrings.properties
+lib/firefox/chrome/en-US/locale/en-US/global/autocomplete.properties
+lib/firefox/chrome/en-US/locale/en-US/global/brand.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/browser.properties
+lib/firefox/chrome/en-US/locale/en-US/global/charsetMenu.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/charsetMenu.properties
+lib/firefox/chrome/en-US/locale/en-US/global/commonDialog.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/commonDialogs.properties
+lib/firefox/chrome/en-US/locale/en-US/global/config.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/config.properties
+lib/firefox/chrome/en-US/locale/en-US/global/console.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/console.properties
+lib/firefox/chrome/en-US/locale/en-US/global/contentAreaCommands.properties
+lib/firefox/chrome/en-US/locale/en-US/global/crashes.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/crashes.properties
+lib/firefox/chrome/en-US/locale/en-US/global/css.properties
+lib/firefox/chrome/en-US/locale/en-US/global/customizeToolbar.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/customizeToolbar.properties
+lib/firefox/chrome/en-US/locale/en-US/global/dateFormat.properties
+lib/firefox/chrome/en-US/locale/en-US/global/datetimepicker.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/dialog.properties
+lib/firefox/chrome/en-US/locale/en-US/global/dialogOverlay.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/dom/dom.properties
+lib/firefox/chrome/en-US/locale/en-US/global/editMenuOverlay.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/extensions.properties
+lib/firefox/chrome/en-US/locale/en-US/global/fallbackMenubar.properties
+lib/firefox/chrome/en-US/locale/en-US/global/filefield.properties
+lib/firefox/chrome/en-US/locale/en-US/global/filepicker.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/filepicker.properties
+lib/firefox/chrome/en-US/locale/en-US/global/findbar.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/findbar.properties
+lib/firefox/chrome/en-US/locale/en-US/global/finddialog.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/finddialog.properties
+lib/firefox/chrome/en-US/locale/en-US/global/global-strres.properties
+lib/firefox/chrome/en-US/locale/en-US/global/global.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/globalKeys.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/headsUpDisplay.properties
+lib/firefox/chrome/en-US/locale/en-US/global/intl.css
+lib/firefox/chrome/en-US/locale/en-US/global/intl.properties
+lib/firefox/chrome/en-US/locale/en-US/global/keys.properties
+lib/firefox/chrome/en-US/locale/en-US/global/languageNames.properties
+lib/firefox/chrome/en-US/locale/en-US/global/layout/HtmlForm.properties
+lib/firefox/chrome/en-US/locale/en-US/global/layout/MediaDocument.properties
+lib/firefox/chrome/en-US/locale/en-US/global/layout/htmlparser.properties
+lib/firefox/chrome/en-US/locale/en-US/global/layout/xmlparser.properties
+lib/firefox/chrome/en-US/locale/en-US/global/layout_errors.properties
+lib/firefox/chrome/en-US/locale/en-US/global/mathml/mathml.properties
+lib/firefox/chrome/en-US/locale/en-US/global/mozilla.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/narrate.properties
+lib/firefox/chrome/en-US/locale/en-US/global/netError.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/netErrorApp.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/notification.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/nsWebBrowserPersist.properties
+lib/firefox/chrome/en-US/locale/en-US/global/plugins.properties
+lib/firefox/chrome/en-US/locale/en-US/global/preferences.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/printPageSetup.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/printPreview.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/printPreviewProgress.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/printProgress.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/printdialog.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/printdialog.properties
+lib/firefox/chrome/en-US/locale/en-US/global/printing.properties
+lib/firefox/chrome/en-US/locale/en-US/global/printjoboptions.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/regionNames.properties
+lib/firefox/chrome/en-US/locale/en-US/global/resetProfile.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/resetProfile.properties
+lib/firefox/chrome/en-US/locale/en-US/global/search/search.properties
+lib/firefox/chrome/en-US/locale/en-US/global/security/caps.properties
+lib/firefox/chrome/en-US/locale/en-US/global/security/csp.properties
+lib/firefox/chrome/en-US/locale/en-US/global/security/security.properties
+lib/firefox/chrome/en-US/locale/en-US/global/svg/svg.properties
+lib/firefox/chrome/en-US/locale/en-US/global/textcontext.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/tree.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/videocontrols.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/viewSource.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/viewSource.properties
+lib/firefox/chrome/en-US/locale/en-US/global/webapps.properties
+lib/firefox/chrome/en-US/locale/en-US/global/wizard.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/wizard.properties
+lib/firefox/chrome/en-US/locale/en-US/global/xbl.properties
+lib/firefox/chrome/en-US/locale/en-US/global/xml/prettyprint.dtd
+lib/firefox/chrome/en-US/locale/en-US/global/xslt/xslt.properties
+lib/firefox/chrome/en-US/locale/en-US/global/xul.properties
+lib/firefox/chrome/en-US/locale/en-US/mozapps/downloads/downloads.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/downloads/downloads.properties
+lib/firefox/chrome/en-US/locale/en-US/mozapps/downloads/settingsChange.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/downloads/unknownContentType.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/downloads/unknownContentType.properties
+lib/firefox/chrome/en-US/locale/en-US/mozapps/extensions/about.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/extensions/blocklist.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/extensions/extensions.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/extensions/extensions.properties
+lib/firefox/chrome/en-US/locale/en-US/mozapps/extensions/newaddon.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/extensions/newaddon.properties
+lib/firefox/chrome/en-US/locale/en-US/mozapps/extensions/update.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/extensions/update.properties
+lib/firefox/chrome/en-US/locale/en-US/mozapps/handling/handling.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/handling/handling.properties
+lib/firefox/chrome/en-US/locale/en-US/mozapps/preferences/changemp.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/preferences/preferences.properties
+lib/firefox/chrome/en-US/locale/en-US/mozapps/preferences/removemp.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/profile/createProfileWizard.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/profile/profileSelection.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/profile/profileSelection.properties
+lib/firefox/chrome/en-US/locale/en-US/mozapps/update/history.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/update/updates.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/update/updates.properties
+lib/firefox/chrome/en-US/locale/en-US/mozapps/xpinstall/xpinstallConfirm.dtd
+lib/firefox/chrome/en-US/locale/en-US/mozapps/xpinstall/xpinstallConfirm.properties
+lib/firefox/chrome/en-US/locale/en-US/necko/necko.properties
+lib/firefox/chrome/en-US/locale/en-US/passwordmgr/passwordManager.dtd
+lib/firefox/chrome/en-US/locale/en-US/passwordmgr/passwordmgr.properties
+lib/firefox/chrome/en-US/locale/en-US/pipnss/nsserrors.properties
+lib/firefox/chrome/en-US/locale/en-US/pipnss/pipnss.properties
+lib/firefox/chrome/en-US/locale/en-US/pippki/certManager.dtd
+lib/firefox/chrome/en-US/locale/en-US/pippki/deviceManager.dtd
+lib/firefox/chrome/en-US/locale/en-US/pippki/pippki.dtd
+lib/firefox/chrome/en-US/locale/en-US/pippki/pippki.properties
+lib/firefox/chrome/en-US/locale/en-US/places/places.properties
+lib/firefox/chrome/en-US/locale/en-US/pluginproblem/pluginproblem.dtd
+lib/firefox/chrome/en-US/locale/en-US/services/errors.properties
+lib/firefox/chrome/en-US/locale/en-US/services/sync.properties
+lib/firefox/chrome/marionette/content/Assert.jsm
+lib/firefox/chrome/marionette/content/ChromePowers.js
+lib/firefox/chrome/marionette/content/MockColorPicker.jsm
+lib/firefox/chrome/marionette/content/MockFilePicker.jsm
+lib/firefox/chrome/marionette/content/MockPermissionPrompt.jsm
+lib/firefox/chrome/marionette/content/MozillaLogger.js
+lib/firefox/chrome/marionette/content/SpecialPowersObserver.jsm
+lib/firefox/chrome/marionette/content/SpecialPowersObserverAPI.js
+lib/firefox/chrome/marionette/content/accessibility.js
+lib/firefox/chrome/marionette/content/action.js
+lib/firefox/chrome/marionette/content/atom.js
+lib/firefox/chrome/marionette/content/browser.js
+lib/firefox/chrome/marionette/content/capture.js
+lib/firefox/chrome/marionette/content/cookies.js
+lib/firefox/chrome/marionette/content/dispatcher.js
+lib/firefox/chrome/marionette/content/driver.js
+lib/firefox/chrome/marionette/content/element.js
+lib/firefox/chrome/marionette/content/error.js
+lib/firefox/chrome/marionette/content/evaluate.js
+lib/firefox/chrome/marionette/content/event.js
+lib/firefox/chrome/marionette/content/frame.js
+lib/firefox/chrome/marionette/content/interaction.js
+lib/firefox/chrome/marionette/content/listener.js
+lib/firefox/chrome/marionette/content/logging.js
+lib/firefox/chrome/marionette/content/message.js
+lib/firefox/chrome/marionette/content/modal.js
+lib/firefox/chrome/marionette/content/proxy.js
+lib/firefox/chrome/marionette/content/server.js
+lib/firefox/chrome/marionette/content/simpletest.js
+lib/firefox/chrome/marionette/content/specialpowers.js
+lib/firefox/chrome/marionette/content/specialpowersAPI.js
+lib/firefox/chrome/pippki/content/pippki/CAOverlay.xul
+lib/firefox/chrome/pippki/content/pippki/MineOverlay.xul
+lib/firefox/chrome/pippki/content/pippki/OrphanOverlay.xul
+lib/firefox/chrome/pippki/content/pippki/OthersOverlay.xul
+lib/firefox/chrome/pippki/content/pippki/WebSitesOverlay.xul
+lib/firefox/chrome/pippki/content/pippki/certDump.xul
+lib/firefox/chrome/pippki/content/pippki/certManager.js
+lib/firefox/chrome/pippki/content/pippki/certManager.xul
+lib/firefox/chrome/pippki/content/pippki/certViewer.xul
+lib/firefox/chrome/pippki/content/pippki/certpicker.js
+lib/firefox/chrome/pippki/content/pippki/certpicker.xul
+lib/firefox/chrome/pippki/content/pippki/changepassword.xul
+lib/firefox/chrome/pippki/content/pippki/choosetoken.js
+lib/firefox/chrome/pippki/content/pippki/choosetoken.xul
+lib/firefox/chrome/pippki/content/pippki/clientauthask.js
+lib/firefox/chrome/pippki/content/pippki/clientauthask.xul
+lib/firefox/chrome/pippki/content/pippki/createCertInfo.js
+lib/firefox/chrome/pippki/content/pippki/createCertInfo.xul
+lib/firefox/chrome/pippki/content/pippki/deletecert.js
+lib/firefox/chrome/pippki/content/pippki/deletecert.xul
+lib/firefox/chrome/pippki/content/pippki/device_manager.js
+lib/firefox/chrome/pippki/content/pippki/device_manager.xul
+lib/firefox/chrome/pippki/content/pippki/downloadcert.js
+lib/firefox/chrome/pippki/content/pippki/downloadcert.xul
+lib/firefox/chrome/pippki/content/pippki/editcacert.xul
+lib/firefox/chrome/pippki/content/pippki/editcerts.js
+lib/firefox/chrome/pippki/content/pippki/exceptionDialog.js
+lib/firefox/chrome/pippki/content/pippki/exceptionDialog.xul
+lib/firefox/chrome/pippki/content/pippki/load_device.xul
+lib/firefox/chrome/pippki/content/pippki/password.js
+lib/firefox/chrome/pippki/content/pippki/pippki.js
+lib/firefox/chrome/pippki/content/pippki/protectedAuth.js
+lib/firefox/chrome/pippki/content/pippki/protectedAuth.xul
+lib/firefox/chrome/pippki/content/pippki/resetpassword.js
+lib/firefox/chrome/pippki/content/pippki/resetpassword.xul
+lib/firefox/chrome/pippki/content/pippki/setp12password.xul
+lib/firefox/chrome/pippki/content/pippki/viewCertDetails.js
+lib/firefox/chrome/pippki/content/pippki/viewCertDetails.xul
+lib/firefox/chrome/recording/content/recording.js
+lib/firefox/chrome/recording/content/recording.xul
+lib/firefox/chrome/toolkit/content/cookie/cookieAcceptDialog.js
+lib/firefox/chrome/toolkit/content/cookie/cookieAcceptDialog.xul
+lib/firefox/chrome/toolkit/content/extensions/ext-alarms.js
+lib/firefox/chrome/toolkit/content/extensions/ext-backgroundPage.js
+lib/firefox/chrome/toolkit/content/extensions/ext-cookies.js
+lib/firefox/chrome/toolkit/content/extensions/ext-downloads.js
+lib/firefox/chrome/toolkit/content/extensions/ext-extension.js
+lib/firefox/chrome/toolkit/content/extensions/ext-i18n.js
+lib/firefox/chrome/toolkit/content/extensions/ext-idle.js
+lib/firefox/chrome/toolkit/content/extensions/ext-notifications.js
+lib/firefox/chrome/toolkit/content/extensions/ext-runtime.js
+lib/firefox/chrome/toolkit/content/extensions/ext-storage.js
+lib/firefox/chrome/toolkit/content/extensions/ext-test.js
+lib/firefox/chrome/toolkit/content/extensions/ext-webNavigation.js
+lib/firefox/chrome/toolkit/content/extensions/ext-webRequest.js
+lib/firefox/chrome/toolkit/content/extensions/schemas/alarms.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/cookies.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/downloads.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/extension.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/extension_types.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/i18n.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/idle.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/manifest.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/notifications.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/runtime.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/storage.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/test.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/web_navigation.json
+lib/firefox/chrome/toolkit/content/extensions/schemas/web_request.json
+lib/firefox/chrome/toolkit/content/formautofill/requestAutocomplete.js
+lib/firefox/chrome/toolkit/content/formautofill/requestAutocomplete.xhtml
+lib/firefox/chrome/toolkit/content/gfxsanity/gfxFrameScript.js
+lib/firefox/chrome/toolkit/content/gfxsanity/sanityparent.html
+lib/firefox/chrome/toolkit/content/gfxsanity/sanitytest.html
+lib/firefox/chrome/toolkit/content/gfxsanity/videotest.mp4
+lib/firefox/chrome/toolkit/content/global/BrowserElementChild.js
+lib/firefox/chrome/toolkit/content/global/BrowserElementChildPreload.js
+lib/firefox/chrome/toolkit/content/global/BrowserElementCopyPaste.js
+lib/firefox/chrome/toolkit/content/global/BrowserElementPanning.js
+lib/firefox/chrome/toolkit/content/global/BrowserElementPanningAPZDisabled.js
+lib/firefox/chrome/toolkit/content/global/TopLevelVideoDocument.js
+lib/firefox/chrome/toolkit/content/global/XPCNativeWrapper.js
+lib/firefox/chrome/toolkit/content/global/about.js
+lib/firefox/chrome/toolkit/content/global/about.xhtml
+lib/firefox/chrome/toolkit/content/global/aboutAbout.js
+lib/firefox/chrome/toolkit/content/global/aboutAbout.xhtml
+lib/firefox/chrome/toolkit/content/global/aboutCache.js
+lib/firefox/chrome/toolkit/content/global/aboutCheckerboard.css
+lib/firefox/chrome/toolkit/content/global/aboutCheckerboard.js
+lib/firefox/chrome/toolkit/content/global/aboutCheckerboard.xhtml
+lib/firefox/chrome/toolkit/content/global/aboutMemory.css
+lib/firefox/chrome/toolkit/content/global/aboutMemory.js
+lib/firefox/chrome/toolkit/content/global/aboutMemory.xhtml
+lib/firefox/chrome/toolkit/content/global/aboutNetworking.js
+lib/firefox/chrome/toolkit/content/global/aboutNetworking.xhtml
+lib/firefox/chrome/toolkit/content/global/aboutPerformance.js
+lib/firefox/chrome/toolkit/content/global/aboutPerformance.xhtml
+lib/firefox/chrome/toolkit/content/global/aboutProfiles.js
+lib/firefox/chrome/toolkit/content/global/aboutProfiles.xhtml
+lib/firefox/chrome/toolkit/content/global/aboutRights.xhtml
+lib/firefox/chrome/toolkit/content/global/aboutServiceWorkers.js
+lib/firefox/chrome/toolkit/content/global/aboutServiceWorkers.xhtml
+lib/firefox/chrome/toolkit/content/global/aboutSupport.js
+lib/firefox/chrome/toolkit/content/global/aboutSupport.xhtml
+lib/firefox/chrome/toolkit/content/global/aboutTelemetry.css
+lib/firefox/chrome/toolkit/content/global/aboutTelemetry.js
+lib/firefox/chrome/toolkit/content/global/aboutTelemetry.xhtml
+lib/firefox/chrome/toolkit/content/global/aboutwebrtc/aboutWebrtc.css
+lib/firefox/chrome/toolkit/content/global/aboutwebrtc/aboutWebrtc.html
+lib/firefox/chrome/toolkit/content/global/aboutwebrtc/aboutWebrtc.js
+lib/firefox/chrome/toolkit/content/global/accessibility/AccessFu.css
+lib/firefox/chrome/toolkit/content/global/accessibility/clicked.ogg
+lib/firefox/chrome/toolkit/content/global/accessibility/content-script.js
+lib/firefox/chrome/toolkit/content/global/accessibility/virtual_cursor_key.ogg
+lib/firefox/chrome/toolkit/content/global/accessibility/virtual_cursor_move.ogg
+lib/firefox/chrome/toolkit/content/global/alerts/alert.css
+lib/firefox/chrome/toolkit/content/global/alerts/alert.js
+lib/firefox/chrome/toolkit/content/global/alerts/alert.xul
+lib/firefox/chrome/toolkit/content/global/appPicker.js
+lib/firefox/chrome/toolkit/content/global/appPicker.xul
+lib/firefox/chrome/toolkit/content/global/autocomplete.css
+lib/firefox/chrome/toolkit/content/global/backgroundPageThumbsContent.js
+lib/firefox/chrome/toolkit/content/global/bindings/autocomplete.xml
+lib/firefox/chrome/toolkit/content/global/bindings/browser.xml
+lib/firefox/chrome/toolkit/content/global/bindings/button.xml
+lib/firefox/chrome/toolkit/content/global/bindings/checkbox.xml
+lib/firefox/chrome/toolkit/content/global/bindings/colorpicker.xml
+lib/firefox/chrome/toolkit/content/global/bindings/datetimepicker.xml
+lib/firefox/chrome/toolkit/content/global/bindings/dialog.xml
+lib/firefox/chrome/toolkit/content/global/bindings/editor.xml
+lib/firefox/chrome/toolkit/content/global/bindings/expander.xml
+lib/firefox/chrome/toolkit/content/global/bindings/filefield.xml
+lib/firefox/chrome/toolkit/content/global/bindings/findbar.xml
+lib/firefox/chrome/toolkit/content/global/bindings/general.xml
+lib/firefox/chrome/toolkit/content/global/bindings/groupbox.xml
+lib/firefox/chrome/toolkit/content/global/bindings/listbox.xml
+lib/firefox/chrome/toolkit/content/global/bindings/menu.xml
+lib/firefox/chrome/toolkit/content/global/bindings/menulist.xml
+lib/firefox/chrome/toolkit/content/global/bindings/notification.xml
+lib/firefox/chrome/toolkit/content/global/bindings/numberbox.xml
+lib/firefox/chrome/toolkit/content/global/bindings/popup.xml
+lib/firefox/chrome/toolkit/content/global/bindings/preferences.xml
+lib/firefox/chrome/toolkit/content/global/bindings/progressmeter.xml
+lib/firefox/chrome/toolkit/content/global/bindings/radio.xml
+lib/firefox/chrome/toolkit/content/global/bindings/remote-browser.xml
+lib/firefox/chrome/toolkit/content/global/bindings/resizer.xml
+lib/firefox/chrome/toolkit/content/global/bindings/richlistbox.xml
+lib/firefox/chrome/toolkit/content/global/bindings/scale.xml
+lib/firefox/chrome/toolkit/content/global/bindings/scrollbar.xml
+lib/firefox/chrome/toolkit/content/global/bindings/scrollbox.xml
+lib/firefox/chrome/toolkit/content/global/bindings/spinbuttons.xml
+lib/firefox/chrome/toolkit/content/global/bindings/splitter.xml
+lib/firefox/chrome/toolkit/content/global/bindings/stringbundle.xml
+lib/firefox/chrome/toolkit/content/global/bindings/tabbox.xml
+lib/firefox/chrome/toolkit/content/global/bindings/text.xml
+lib/firefox/chrome/toolkit/content/global/bindings/textbox.xml
+lib/firefox/chrome/toolkit/content/global/bindings/toolbar.xml
+lib/firefox/chrome/toolkit/content/global/bindings/toolbarbutton.xml
+lib/firefox/chrome/toolkit/content/global/bindings/tree.xml
+lib/firefox/chrome/toolkit/content/global/bindings/videocontrols.css
+lib/firefox/chrome/toolkit/content/global/bindings/videocontrols.xml
+lib/firefox/chrome/toolkit/content/global/bindings/wizard.xml
+lib/firefox/chrome/toolkit/content/global/browser-child.js
+lib/firefox/chrome/toolkit/content/global/browser-content.js
+lib/firefox/chrome/toolkit/content/global/buildconfig.html
+lib/firefox/chrome/toolkit/content/global/commonDialog.css
+lib/firefox/chrome/toolkit/content/global/commonDialog.js
+lib/firefox/chrome/toolkit/content/global/commonDialog.xul
+lib/firefox/chrome/toolkit/content/global/config.js
+lib/firefox/chrome/toolkit/content/global/config.xul
+lib/firefox/chrome/toolkit/content/global/console.css
+lib/firefox/chrome/toolkit/content/global/console.js
+lib/firefox/chrome/toolkit/content/global/console.xul
+lib/firefox/chrome/toolkit/content/global/consoleBindings.xml
+lib/firefox/chrome/toolkit/content/global/contentAreaUtils.js
+lib/firefox/chrome/toolkit/content/global/customizeToolbar.css
+lib/firefox/chrome/toolkit/content/global/customizeToolbar.js
+lib/firefox/chrome/toolkit/content/global/customizeToolbar.xul
+lib/firefox/chrome/toolkit/content/global/devicestorage.properties
+lib/firefox/chrome/toolkit/content/global/dialogOverlay.js
+lib/firefox/chrome/toolkit/content/global/dialogOverlay.xul
+lib/firefox/chrome/toolkit/content/global/directionDetector.html
+lib/firefox/chrome/toolkit/content/global/editMenuOverlay.js
+lib/firefox/chrome/toolkit/content/global/editMenuOverlay.xul
+lib/firefox/chrome/toolkit/content/global/extensions.js
+lib/firefox/chrome/toolkit/content/global/filepicker.js
+lib/firefox/chrome/toolkit/content/global/filepicker.properties
+lib/firefox/chrome/toolkit/content/global/filepicker.xul
+lib/firefox/chrome/toolkit/content/global/findUtils.js
+lib/firefox/chrome/toolkit/content/global/finddialog.js
+lib/firefox/chrome/toolkit/content/global/finddialog.xul
+lib/firefox/chrome/toolkit/content/global/forms.js
+lib/firefox/chrome/toolkit/content/global/globalOverlay.js
+lib/firefox/chrome/toolkit/content/global/globalOverlay.xul
+lib/firefox/chrome/toolkit/content/global/inlineSpellCheckUI.js
+lib/firefox/chrome/toolkit/content/global/license.html
+lib/firefox/chrome/toolkit/content/global/manifestMessages.js
+lib/firefox/chrome/toolkit/content/global/menulist.css
+lib/firefox/chrome/toolkit/content/global/minimal-xul.css
+lib/firefox/chrome/toolkit/content/global/mozilla.xhtml
+lib/firefox/chrome/toolkit/content/global/netError.xhtml
+lib/firefox/chrome/toolkit/content/global/notfound.wav
+lib/firefox/chrome/toolkit/content/global/nsClipboard.js
+lib/firefox/chrome/toolkit/content/global/nsDragAndDrop.js
+lib/firefox/chrome/toolkit/content/global/nsUserSettings.js
+lib/firefox/chrome/toolkit/content/global/platformHTMLBindings.xml
+lib/firefox/chrome/toolkit/content/global/plugins.css
+lib/firefox/chrome/toolkit/content/global/plugins.html
+lib/firefox/chrome/toolkit/content/global/preload.js
+lib/firefox/chrome/toolkit/content/global/printPageSetup.js
+lib/firefox/chrome/toolkit/content/global/printPageSetup.xul
+lib/firefox/chrome/toolkit/content/global/printPreviewBindings.xml
+lib/firefox/chrome/toolkit/content/global/printPreviewProgress.js
+lib/firefox/chrome/toolkit/content/global/printPreviewProgress.xul
+lib/firefox/chrome/toolkit/content/global/printProgress.js
+lib/firefox/chrome/toolkit/content/global/printProgress.xul
+lib/firefox/chrome/toolkit/content/global/printUtils.js
+lib/firefox/chrome/toolkit/content/global/printdialog.js
+lib/firefox/chrome/toolkit/content/global/printdialog.xul
+lib/firefox/chrome/toolkit/content/global/printjoboptions.js
+lib/firefox/chrome/toolkit/content/global/printjoboptions.xul
+lib/firefox/chrome/toolkit/content/global/process-content.js
+lib/firefox/chrome/toolkit/content/global/reader/aboutReader.html
+lib/firefox/chrome/toolkit/content/global/reader/aboutReader.js
+lib/firefox/chrome/toolkit/content/global/remote-test-ipc.js
+lib/firefox/chrome/toolkit/content/global/resetProfile.css
+lib/firefox/chrome/toolkit/content/global/resetProfile.js
+lib/firefox/chrome/toolkit/content/global/resetProfile.xul
+lib/firefox/chrome/toolkit/content/global/resetProfileProgress.xul
+lib/firefox/chrome/toolkit/content/global/select-child.js
+lib/firefox/chrome/toolkit/content/global/selectDialog.js
+lib/firefox/chrome/toolkit/content/global/selectDialog.xul
+lib/firefox/chrome/toolkit/content/global/simplifyMode.css
+lib/firefox/chrome/toolkit/content/global/strres.js
+lib/firefox/chrome/toolkit/content/global/svg/svgBindings.xml
+lib/firefox/chrome/toolkit/content/global/tabprompts.css
+lib/firefox/chrome/toolkit/content/global/tabprompts.xml
+lib/firefox/chrome/toolkit/content/global/test-ipc.xul
+lib/firefox/chrome/toolkit/content/global/textbox.css
+lib/firefox/chrome/toolkit/content/global/treeUtils.js
+lib/firefox/chrome/toolkit/content/global/viewPartialSource.js
+lib/firefox/chrome/toolkit/content/global/viewPartialSource.xul
+lib/firefox/chrome/toolkit/content/global/viewSource-content.js
+lib/firefox/chrome/toolkit/content/global/viewSource.css
+lib/firefox/chrome/toolkit/content/global/viewSource.js
+lib/firefox/chrome/toolkit/content/global/viewSource.xul
+lib/firefox/chrome/toolkit/content/global/viewSourceUtils.js
+lib/firefox/chrome/toolkit/content/global/viewZoomOverlay.js
+lib/firefox/chrome/toolkit/content/global/xml/XMLMonoPrint.css
+lib/firefox/chrome/toolkit/content/global/xml/XMLPrettyPrint.css
+lib/firefox/chrome/toolkit/content/global/xml/XMLPrettyPrint.xml
+lib/firefox/chrome/toolkit/content/global/xml/XMLPrettyPrint.xsl
+lib/firefox/chrome/toolkit/content/global/xul.css
+lib/firefox/chrome/toolkit/content/mozapps/downloads/DownloadProgressListener.js
+lib/firefox/chrome/toolkit/content/mozapps/downloads/download.xml
+lib/firefox/chrome/toolkit/content/mozapps/downloads/downloads.css
+lib/firefox/chrome/toolkit/content/mozapps/downloads/downloads.js
+lib/firefox/chrome/toolkit/content/mozapps/downloads/downloads.xul
+lib/firefox/chrome/toolkit/content/mozapps/downloads/helperApps.js
+lib/firefox/chrome/toolkit/content/mozapps/downloads/unknownContentType.xul
+lib/firefox/chrome/toolkit/content/mozapps/extensions/OpenH264-license.txt
+lib/firefox/chrome/toolkit/content/mozapps/extensions/about.js
+lib/firefox/chrome/toolkit/content/mozapps/extensions/about.xul
+lib/firefox/chrome/toolkit/content/mozapps/extensions/blocklist.css
+lib/firefox/chrome/toolkit/content/mozapps/extensions/blocklist.js
+lib/firefox/chrome/toolkit/content/mozapps/extensions/blocklist.xml
+lib/firefox/chrome/toolkit/content/mozapps/extensions/blocklist.xul
+lib/firefox/chrome/toolkit/content/mozapps/extensions/eula.js
+lib/firefox/chrome/toolkit/content/mozapps/extensions/eula.xul
+lib/firefox/chrome/toolkit/content/mozapps/extensions/extensions.css
+lib/firefox/chrome/toolkit/content/mozapps/extensions/extensions.js
+lib/firefox/chrome/toolkit/content/mozapps/extensions/extensions.xml
+lib/firefox/chrome/toolkit/content/mozapps/extensions/extensions.xul
+lib/firefox/chrome/toolkit/content/mozapps/extensions/gmpPrefs.xul
+lib/firefox/chrome/toolkit/content/mozapps/extensions/list.js
+lib/firefox/chrome/toolkit/content/mozapps/extensions/list.xul
+lib/firefox/chrome/toolkit/content/mozapps/extensions/newaddon.js
+lib/firefox/chrome/toolkit/content/mozapps/extensions/newaddon.xul
+lib/firefox/chrome/toolkit/content/mozapps/extensions/pluginPrefs.xul
+lib/firefox/chrome/toolkit/content/mozapps/extensions/setting.xml
+lib/firefox/chrome/toolkit/content/mozapps/extensions/update.js
+lib/firefox/chrome/toolkit/content/mozapps/extensions/update.xul
+lib/firefox/chrome/toolkit/content/mozapps/extensions/updateinfo.xsl
+lib/firefox/chrome/toolkit/content/mozapps/handling/dialog.js
+lib/firefox/chrome/toolkit/content/mozapps/handling/dialog.xul
+lib/firefox/chrome/toolkit/content/mozapps/handling/handler.css
+lib/firefox/chrome/toolkit/content/mozapps/handling/handler.xml
+lib/firefox/chrome/toolkit/content/mozapps/preferences/changemp.js
+lib/firefox/chrome/toolkit/content/mozapps/preferences/changemp.xul
+lib/firefox/chrome/toolkit/content/mozapps/preferences/fontbuilder.js
+lib/firefox/chrome/toolkit/content/mozapps/preferences/removemp.js
+lib/firefox/chrome/toolkit/content/mozapps/preferences/removemp.xul
+lib/firefox/chrome/toolkit/content/mozapps/profile/createProfileWizard.js
+lib/firefox/chrome/toolkit/content/mozapps/profile/createProfileWizard.xul
+lib/firefox/chrome/toolkit/content/mozapps/profile/profileSelection.js
+lib/firefox/chrome/toolkit/content/mozapps/profile/profileSelection.xul
+lib/firefox/chrome/toolkit/content/mozapps/xpinstall/xpinstallConfirm.css
+lib/firefox/chrome/toolkit/content/mozapps/xpinstall/xpinstallConfirm.js
+lib/firefox/chrome/toolkit/content/mozapps/xpinstall/xpinstallConfirm.xul
+lib/firefox/chrome/toolkit/content/mozapps/xpinstall/xpinstallItem.xml
+lib/firefox/chrome/toolkit/content/passwordmgr/login.xml
+lib/firefox/chrome/toolkit/content/passwordmgr/passwordManager.js
+lib/firefox/chrome/toolkit/content/passwordmgr/passwordManager.xul
+lib/firefox/chrome/toolkit/content/passwordmgr/passwordManagerCommon.js
+lib/firefox/chrome/toolkit/content/passwordmgr/passwordManagerExceptions.js
+lib/firefox/chrome/toolkit/content/passwordmgr/passwordManagerExceptions.xul
+lib/firefox/chrome/toolkit/content/passwordmgr/recipes.json
+lib/firefox/chrome/toolkit/content/satchel/formSubmitListener.js
+lib/firefox/chrome/toolkit/content/xbl-marquee/xbl-marquee.css
+lib/firefox/chrome/toolkit/content/xbl-marquee/xbl-marquee.xml
+lib/firefox/chrome/toolkit/pluginproblem/pluginFinderBinding.css
+lib/firefox/chrome/toolkit/pluginproblem/pluginProblem.xml
+lib/firefox/chrome/toolkit/pluginproblem/pluginProblemBinding.css
+lib/firefox/chrome/toolkit/pluginproblem/pluginProblemContent.css
+lib/firefox/chrome/toolkit/res/accessiblecaret-normal%1.5x.png@localhost
+lib/firefox/chrome/toolkit/res/accessiblecaret-normal%1x.png@localhost
+lib/firefox/chrome/toolkit/res/accessiblecaret-normal%2.25x.png@localhost
+lib/firefox/chrome/toolkit/res/accessiblecaret-normal%2x.png@localhost
+lib/firefox/chrome/toolkit/res/accessiblecaret-tilt-left%1.5x.png@localhost
+lib/firefox/chrome/toolkit/res/accessiblecaret-tilt-left%1x.png@localhost
+lib/firefox/chrome/toolkit/res/accessiblecaret-tilt-left%2.25x.png@localhost
+lib/firefox/chrome/toolkit/res/accessiblecaret-tilt-left%2x.png@localhost
+lib/firefox/chrome/toolkit/res/accessiblecaret-tilt-right%1.5x.png@localhost
+lib/firefox/chrome/toolkit/res/accessiblecaret-tilt-right%1x.png@localhost
+lib/firefox/chrome/toolkit/res/accessiblecaret-tilt-right%2.25x.png@localhost
+lib/firefox/chrome/toolkit/res/accessiblecaret-tilt-right%2x.png@localhost
+lib/firefox/chrome/toolkit/res/arrow-left.gif
+lib/firefox/chrome/toolkit/res/arrow-right.gif
+lib/firefox/chrome/toolkit/res/arrow.gif
+lib/firefox/chrome/toolkit/res/arrowd-left.gif
+lib/firefox/chrome/toolkit/res/arrowd-right.gif
+lib/firefox/chrome/toolkit/res/arrowd.gif
+lib/firefox/chrome/toolkit/res/broken-image.png
+lib/firefox/chrome/toolkit/res/counterstyles.css
+lib/firefox/chrome/toolkit/res/forms.css
+lib/firefox/chrome/toolkit/res/hiddenWindow.html
+lib/firefox/chrome/toolkit/res/html.css
+lib/firefox/chrome/toolkit/res/loading-image.png
+lib/firefox/chrome/toolkit/res/mathml.css
+lib/firefox/chrome/toolkit/res/noframes.css
+lib/firefox/chrome/toolkit/res/noscript.css
+lib/firefox/chrome/toolkit/res/number-control.css
+lib/firefox/chrome/toolkit/res/plaintext.css
+lib/firefox/chrome/toolkit/res/quirk.css
+lib/firefox/chrome/toolkit/res/ua.css
+lib/firefox/chrome/toolkit/res/viewsource.css
+lib/firefox/chrome/toolkit/skin/classic/global/Filepicker.png
+lib/firefox/chrome/toolkit/skin/classic/global/about.css
+lib/firefox/chrome/toolkit/skin/classic/global/aboutCache.css
+lib/firefox/chrome/toolkit/skin/classic/global/aboutCacheEntry.css
+lib/firefox/chrome/toolkit/skin/classic/global/aboutMemory.css
+lib/firefox/chrome/toolkit/skin/classic/global/aboutReader.css
+lib/firefox/chrome/toolkit/skin/classic/global/aboutReaderContent.css
+lib/firefox/chrome/toolkit/skin/classic/global/aboutReaderControls.css
+lib/firefox/chrome/toolkit/skin/classic/global/aboutSupport.css
+lib/firefox/chrome/toolkit/skin/classic/global/alerts/alert-common.css
+lib/firefox/chrome/toolkit/skin/classic/global/alerts/alert.css
+lib/firefox/chrome/toolkit/skin/classic/global/appPicker.css
+lib/firefox/chrome/toolkit/skin/classic/global/arrow.css
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-dn-dis.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-dn-hov.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-dn-sharp.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-dn.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-down.png
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-lft-dis.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-lft-sharp-end.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-lft-sharp.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-lft.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-rit-dis.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-rit-sharp-end.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-rit-sharp.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-rit.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-up-dis.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-up-hov.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-up-sharp.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/arrow-up.gif
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/panelarrow-horizontal-themed.svg
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/panelarrow-horizontal.svg
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/panelarrow-vertical-themed.svg
+lib/firefox/chrome/toolkit/skin/classic/global/arrow/panelarrow-vertical.svg
+lib/firefox/chrome/toolkit/skin/classic/global/autocomplete.css
+lib/firefox/chrome/toolkit/skin/classic/global/button.css
+lib/firefox/chrome/toolkit/skin/classic/global/checkbox.css
+lib/firefox/chrome/toolkit/skin/classic/global/checkbox/cbox-check-dis.gif
+lib/firefox/chrome/toolkit/skin/classic/global/checkbox/cbox-check.gif
+lib/firefox/chrome/toolkit/skin/classic/global/colorpicker.css
+lib/firefox/chrome/toolkit/skin/classic/global/commonDialog.css
+lib/firefox/chrome/toolkit/skin/classic/global/config.css
+lib/firefox/chrome/toolkit/skin/classic/global/console/console-error-caret.gif
+lib/firefox/chrome/toolkit/skin/classic/global/console/console-error-dash.gif
+lib/firefox/chrome/toolkit/skin/classic/global/console/console-toolbar.png
+lib/firefox/chrome/toolkit/skin/classic/global/console/console.css
+lib/firefox/chrome/toolkit/skin/classic/global/console/console.png
+lib/firefox/chrome/toolkit/skin/classic/global/console/itemSelected.png
+lib/firefox/chrome/toolkit/skin/classic/global/customizeToolbar.css
+lib/firefox/chrome/toolkit/skin/classic/global/datetimepicker.css
+lib/firefox/chrome/toolkit/skin/classic/global/dialog.css
+lib/firefox/chrome/toolkit/skin/classic/global/dirListing/dirListing.css
+lib/firefox/chrome/toolkit/skin/classic/global/dirListing/folder.png
+lib/firefox/chrome/toolkit/skin/classic/global/dirListing/local.png
+lib/firefox/chrome/toolkit/skin/classic/global/dirListing/remote.png
+lib/firefox/chrome/toolkit/skin/classic/global/dirListing/up.png
+lib/firefox/chrome/toolkit/skin/classic/global/dropmarker.css
+lib/firefox/chrome/toolkit/skin/classic/global/expander.css
+lib/firefox/chrome/toolkit/skin/classic/global/filefield.css
+lib/firefox/chrome/toolkit/skin/classic/global/filepicker.css
+lib/firefox/chrome/toolkit/skin/classic/global/findBar.css
+lib/firefox/chrome/toolkit/skin/classic/global/global.css
+lib/firefox/chrome/toolkit/skin/classic/global/globalBindings.xml
+lib/firefox/chrome/toolkit/skin/classic/global/groupbox.css
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Authentication.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Close.gif
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Error.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Landscape.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Minimize.gif
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Portrait.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Print-preview.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Question.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Restore.gif
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Search-close.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Search-glass.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/Warning.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/autocomplete-search.svg
+lib/firefox/chrome/toolkit/skin/classic/global/icons/autoscroll.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/blacklist_favicon.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/blacklist_large.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/blocked.svg
+lib/firefox/chrome/toolkit/skin/classic/global/icons/close-inverted.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/close-inverted%2x.png@localhost
+lib/firefox/chrome/toolkit/skin/classic/global/icons/close.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/close.svg
+lib/firefox/chrome/toolkit/skin/classic/global/icons/close%2x.png@localhost
+lib/firefox/chrome/toolkit/skin/classic/global/icons/collapse.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/error-16.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/error-64.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/expand.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/find-arrows.svg
+lib/firefox/chrome/toolkit/skin/classic/global/icons/folder-item.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/info.svg
+lib/firefox/chrome/toolkit/skin/classic/global/icons/information-16.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/information-24.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/information-32.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/loading-inverted.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/loading-inverted%2x.png@localhost
+lib/firefox/chrome/toolkit/skin/classic/global/icons/loading.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/panelarrow-horizontal.svg
+lib/firefox/chrome/toolkit/skin/classic/global/icons/panelarrow-vertical.svg
+lib/firefox/chrome/toolkit/skin/classic/global/icons/question-16.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/question-64.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/resizer-rtl.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/resizer.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/sslWarning.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/tabprompts-bgtexture.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/warning-16.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/warning-64.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/warning-large.png
+lib/firefox/chrome/toolkit/skin/classic/global/icons/warning.svg
+lib/firefox/chrome/toolkit/skin/classic/global/icons/windowControls.png
+lib/firefox/chrome/toolkit/skin/classic/global/in-content/check-partial.svg
+lib/firefox/chrome/toolkit/skin/classic/global/in-content/check.svg
+lib/firefox/chrome/toolkit/skin/classic/global/in-content/common.css
+lib/firefox/chrome/toolkit/skin/classic/global/in-content/dropdown.svg
+lib/firefox/chrome/toolkit/skin/classic/global/in-content/help-glyph.svg
+lib/firefox/chrome/toolkit/skin/classic/global/in-content/info-pages.css
+lib/firefox/chrome/toolkit/skin/classic/global/in-content/radio.svg
+lib/firefox/chrome/toolkit/skin/classic/global/linkTree.css
+lib/firefox/chrome/toolkit/skin/classic/global/listbox.css
+lib/firefox/chrome/toolkit/skin/classic/global/media/TopLevelImageDocument.css
+lib/firefox/chrome/toolkit/skin/classic/global/media/TopLevelVideoDocument.css
+lib/firefox/chrome/toolkit/skin/classic/global/media/clicktoplay-bgtexture.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/error.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/fullscreenButton.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/imagedoc-darknoise.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/imagedoc-lightnoise.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/muteButton.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/noAudio.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/pauseButton.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/playButton.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/scrubberThumb.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/scrubberThumbWide.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/stalled.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/throbber.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/unmuteButton.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/videoClickToPlayButton.svg
+lib/firefox/chrome/toolkit/skin/classic/global/media/videocontrols.css
+lib/firefox/chrome/toolkit/skin/classic/global/media/volume-empty.png
+lib/firefox/chrome/toolkit/skin/classic/global/media/volume-full.png
+lib/firefox/chrome/toolkit/skin/classic/global/menu.css
+lib/firefox/chrome/toolkit/skin/classic/global/menu/shared-menu-check-active.svg
+lib/firefox/chrome/toolkit/skin/classic/global/menu/shared-menu-check-black.svg
+lib/firefox/chrome/toolkit/skin/classic/global/menu/shared-menu-check-hover.svg
+lib/firefox/chrome/toolkit/skin/classic/global/menu/shared-menu-check.png
+lib/firefox/chrome/toolkit/skin/classic/global/menu/shared-menu-check%2x.png@localhost
+lib/firefox/chrome/toolkit/skin/classic/global/menulist.css
+lib/firefox/chrome/toolkit/skin/classic/global/narrate.css
+lib/firefox/chrome/toolkit/skin/classic/global/narrate/arrow.svg
+lib/firefox/chrome/toolkit/skin/classic/global/narrate/back.svg
+lib/firefox/chrome/toolkit/skin/classic/global/narrate/fast.svg
+lib/firefox/chrome/toolkit/skin/classic/global/narrate/forward.svg
+lib/firefox/chrome/toolkit/skin/classic/global/narrate/slow.svg
+lib/firefox/chrome/toolkit/skin/classic/global/narrate/start.svg
+lib/firefox/chrome/toolkit/skin/classic/global/narrate/stop.svg
+lib/firefox/chrome/toolkit/skin/classic/global/narrateControls.css
+lib/firefox/chrome/toolkit/skin/classic/global/netError.css
+lib/firefox/chrome/toolkit/skin/classic/global/notification.css
+lib/firefox/chrome/toolkit/skin/classic/global/numberbox.css
+lib/firefox/chrome/toolkit/skin/classic/global/passwordmgr.css
+lib/firefox/chrome/toolkit/skin/classic/global/popup.css
+lib/firefox/chrome/toolkit/skin/classic/global/preferences.css
+lib/firefox/chrome/toolkit/skin/classic/global/printPageSetup.css
+lib/firefox/chrome/toolkit/skin/classic/global/printPreview.css
+lib/firefox/chrome/toolkit/skin/classic/global/printpreview/arrow-left-end.png
+lib/firefox/chrome/toolkit/skin/classic/global/printpreview/arrow-left.png
+lib/firefox/chrome/toolkit/skin/classic/global/printpreview/arrow-right-end.png
+lib/firefox/chrome/toolkit/skin/classic/global/printpreview/arrow-right.png
+lib/firefox/chrome/toolkit/skin/classic/global/progressmeter.css
+lib/firefox/chrome/toolkit/skin/classic/global/radio.css
+lib/firefox/chrome/toolkit/skin/classic/global/radio/radio-check-dis.gif
+lib/firefox/chrome/toolkit/skin/classic/global/radio/radio-check.gif
+lib/firefox/chrome/toolkit/skin/classic/global/reader/RM-Close-24x24.svg
+lib/firefox/chrome/toolkit/skin/classic/global/reader/RM-Content-Width-Minus-42x16.svg
+lib/firefox/chrome/toolkit/skin/classic/global/reader/RM-Content-Width-Plus-44x16.svg
+lib/firefox/chrome/toolkit/skin/classic/global/reader/RM-Line-Height-Minus-38x14.svg
+lib/firefox/chrome/toolkit/skin/classic/global/reader/RM-Line-Height-Plus-38x24.svg
+lib/firefox/chrome/toolkit/skin/classic/global/reader/RM-Minus-24x24.svg
+lib/firefox/chrome/toolkit/skin/classic/global/reader/RM-Plus-24x24.svg
+lib/firefox/chrome/toolkit/skin/classic/global/reader/RM-Type-Controls-24x24.svg
+lib/firefox/chrome/toolkit/skin/classic/global/reader/RM-Type-Controls-Arrow.svg
+lib/firefox/chrome/toolkit/skin/classic/global/resizer.css
+lib/firefox/chrome/toolkit/skin/classic/global/richlistbox.css
+lib/firefox/chrome/toolkit/skin/classic/global/scale.css
+lib/firefox/chrome/toolkit/skin/classic/global/scrollbar/slider.gif
+lib/firefox/chrome/toolkit/skin/classic/global/scrollbars.css
+lib/firefox/chrome/toolkit/skin/classic/global/scrollbox.css
+lib/firefox/chrome/toolkit/skin/classic/global/spinbuttons.css
+lib/firefox/chrome/toolkit/skin/classic/global/splitter.css
+lib/firefox/chrome/toolkit/skin/classic/global/splitter/grip-bottom.gif
+lib/firefox/chrome/toolkit/skin/classic/global/splitter/grip-left.gif
+lib/firefox/chrome/toolkit/skin/classic/global/splitter/grip-right.gif
+lib/firefox/chrome/toolkit/skin/classic/global/splitter/grip-top.gif
+lib/firefox/chrome/toolkit/skin/classic/global/tabbox.css
+lib/firefox/chrome/toolkit/skin/classic/global/tabprompts.css
+lib/firefox/chrome/toolkit/skin/classic/global/textbox.css
+lib/firefox/chrome/toolkit/skin/classic/global/toolbar.css
+lib/firefox/chrome/toolkit/skin/classic/global/toolbar/chevron-inverted.png
+lib/firefox/chrome/toolkit/skin/classic/global/toolbar/chevron.gif
+lib/firefox/chrome/toolkit/skin/classic/global/toolbar/spring.png
+lib/firefox/chrome/toolkit/skin/classic/global/toolbarbutton.css
+lib/firefox/chrome/toolkit/skin/classic/global/tree.css
+lib/firefox/chrome/toolkit/skin/classic/global/tree/columnpicker.gif
+lib/firefox/chrome/toolkit/skin/classic/global/tree/sort-asc-classic.png
+lib/firefox/chrome/toolkit/skin/classic/global/tree/sort-asc.png
+lib/firefox/chrome/toolkit/skin/classic/global/tree/sort-dsc-classic.png
+lib/firefox/chrome/toolkit/skin/classic/global/tree/sort-dsc.png
+lib/firefox/chrome/toolkit/skin/classic/global/tree/twisty-clsd.png
+lib/firefox/chrome/toolkit/skin/classic/global/tree/twisty-open.png
+lib/firefox/chrome/toolkit/skin/classic/global/wizard.css
+lib/firefox/chrome/toolkit/skin/classic/help/Toolbar-rtl.png
+lib/firefox/chrome/toolkit/skin/classic/help/Toolbar.png
+lib/firefox/chrome/toolkit/skin/classic/help/Weblink-rtl.png
+lib/firefox/chrome/toolkit/skin/classic/help/Weblink.png
+lib/firefox/chrome/toolkit/skin/classic/help/helpFileLayout.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/aboutNetworking.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/aboutProfiles.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/aboutServiceWorkers.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/downloads/downloadButtons.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/downloads/downloadIcon.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/downloads/downloads.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/downloads/unknownContentType.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/about.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/alerticon-error.svg
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/alerticon-info-negative.svg
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/alerticon-info-positive.svg
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/alerticon-warning.svg
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/blocklist.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/cancel.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/category-available.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/category-discover.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/category-plugins.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/category-recent.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/category-search.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/category-service.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/dictionaryGeneric-16.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/dictionaryGeneric.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/discover-logo.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/eula.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/experimentGeneric.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/extensionGeneric-16.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/extensionGeneric.svg
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/extensions.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/heart.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/localeGeneric.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/navigation.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/newaddon.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/rating-not-won.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/rating-won.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/themeGeneric-16.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/themeGeneric.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/update.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/extensions/utilities.svg
+lib/firefox/chrome/toolkit/skin/classic/mozapps/formautofill/requestAutocomplete.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/handling/handling.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/passwordmgr/key-16.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/passwordmgr/key-64.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/places/defaultFavicon-inverted.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/places/defaultFavicon-inverted%2x.png@localhost
+lib/firefox/chrome/toolkit/skin/classic/mozapps/places/defaultFavicon.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/places/defaultFavicon%2x.png@localhost
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginActivate.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginBlocked.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginClose.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginCrashed.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginDisabled.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginDownload.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginMissing.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginStripe.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/pluginBlocked-64.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/pluginBlocked.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/pluginGeneric-16.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/pluginGeneric.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/pluginHelp-16.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/plugins/pluginProblem.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/profile/profileSelection.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/profile/profileicon.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/update/downloadButtons.png
+lib/firefox/chrome/toolkit/skin/classic/mozapps/update/updates.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/viewsource/viewsource.css
+lib/firefox/chrome/toolkit/skin/classic/mozapps/xpinstall/xpinstallConfirm.css
+lib/firefox/components/ActivityMessageConfigurator.js
+lib/firefox/components/ActivityProxy.js
+lib/firefox/components/ActivityRequestHandler.js
+lib/firefox/components/ActivityWrapper.js
+lib/firefox/components/AlarmsManager.js
+lib/firefox/components/AppsService.js
+lib/firefox/components/BrowserElementParent.js
+lib/firefox/components/BrowserElementProxy.js
+lib/firefox/components/CSSUnprefixingService.js
+lib/firefox/components/ChromeNotifications.js
+lib/firefox/components/ColorAnalyzer.js
+lib/firefox/components/ConsoleAPIStorage.js
+lib/firefox/components/ContactManager.js
+lib/firefox/components/ContentProcessSingleton.js
+lib/firefox/components/DownloadLegacy.js
+lib/firefox/components/FeedProcessor.js
+lib/firefox/components/FormAutofillContentService.js
+lib/firefox/components/FormAutofillStartup.js
+lib/firefox/components/FormHistoryStartup.js
+lib/firefox/components/FxAccountsPush.js
+lib/firefox/components/InstallPackagedWebapp.js
+lib/firefox/components/MainProcessSingleton.js
+lib/firefox/components/MozKeyboard.js
+lib/firefox/components/NetworkGeolocationProvider.js
+lib/firefox/components/NotificationStorage.js
+lib/firefox/components/PACGenerator.js
+lib/firefox/components/PackagedAppUtils.js
+lib/firefox/components/PageThumbsProtocol.js
+lib/firefox/components/Payment.js
+lib/firefox/components/PaymentFlowInfo.js
+lib/firefox/components/PermissionSettings.js
+lib/firefox/components/PhoneNumberService.js
+lib/firefox/components/PlacesCategoriesStarter.js
+lib/firefox/components/PresentationControlService.js
+lib/firefox/components/PresentationDataChannelSessionTransport.js
+lib/firefox/components/PresentationDeviceInfoManager.js
+lib/firefox/components/PrivateBrowsingTrackingProtectionWhitelist.js
+lib/firefox/components/Push.js
+lib/firefox/components/PushComponents.js
+lib/firefox/components/RemoteWebNavigation.js
+lib/firefox/components/SecurityReporter.js
+lib/firefox/components/SettingsManager.js
+lib/firefox/components/SiteSpecificUserAgent.js
+lib/firefox/components/SlowScriptDebug.js
+lib/firefox/components/SystemMessageCache.js
+lib/firefox/components/SystemMessageInternal.js
+lib/firefox/components/SystemMessageManager.js
+lib/firefox/components/TVSimulatorService.js
+lib/firefox/components/TelemetryStartup.js
+lib/firefox/components/TooltipTextProvider.js
+lib/firefox/components/UnifiedComplete.js
+lib/firefox/components/Weave.js
+lib/firefox/components/WebVTTParserWrapper.js
+lib/firefox/components/Webapps.js
+lib/firefox/components/XULStore.js
+lib/firefox/components/addonManager.js
+lib/firefox/components/amContentHandler.js
+lib/firefox/components/amInstallTrigger.js
+lib/firefox/components/amWebAPI.js
+lib/firefox/components/amWebInstallListener.js
+lib/firefox/components/captivedetect.js
+lib/firefox/components/components.manifest
+lib/firefox/components/contentAreaDropListener.js
+lib/firefox/components/crypto-SDR.js
+lib/firefox/components/defaultShims.js
+lib/firefox/components/htmlMenuBuilder.js
+lib/firefox/components/interfaces.xpt
+lib/firefox/components/jsconsole-clhandler.js
+lib/firefox/components/marionettecomponent.js
+lib/firefox/components/messageWakeupService.js
+lib/firefox/components/multiprocessShims.js
+lib/firefox/components/nsAsyncShutdown.js
+lib/firefox/components/nsBlocklistService.js
+lib/firefox/components/nsBlocklistServiceContent.js
+lib/firefox/components/nsContentDispatchChooser.js
+lib/firefox/components/nsContentPrefService.js
+lib/firefox/components/nsCrashMonitor.js
+lib/firefox/components/nsDefaultCLH.js
+lib/firefox/components/nsFilePicker.js
+lib/firefox/components/nsFormAutoComplete.js
+lib/firefox/components/nsFormHistory.js
+lib/firefox/components/nsHandlerService.js
+lib/firefox/components/nsHelperAppDlg.js
+lib/firefox/components/nsINIProcessor.js
+lib/firefox/components/nsInputListAutoComplete.js
+lib/firefox/components/nsLivemarkService.js
+lib/firefox/components/nsLoginInfo.js
+lib/firefox/components/nsLoginManager.js
+lib/firefox/components/nsLoginManagerPrompter.js
+lib/firefox/components/nsPlacesExpiration.js
+lib/firefox/components/nsPrompter.js
+lib/firefox/components/nsSearchService.js
+lib/firefox/components/nsSearchSuggestions.js
+lib/firefox/components/nsSidebar.js
+lib/firefox/components/nsTaggingService.js
+lib/firefox/components/nsTerminatorTelemetry.js
+lib/firefox/components/nsURLFormatter.js
+lib/firefox/components/nsUpdateTimerManager.js
+lib/firefox/components/nsUrlClassifierHashCompleter.js
+lib/firefox/components/nsUrlClassifierLib.js
+lib/firefox/components/nsUrlClassifierListManager.js
+lib/firefox/components/nsWebHandlerApp.js
+lib/firefox/components/recording-cmdline.js
+lib/firefox/components/simpleServices.js
+lib/firefox/components/storage-json.js
+lib/firefox/components/txEXSLTRegExFunctions.js
+lib/firefox/defaults/autoconfig/prefcalls.js
+lib/firefox/defaults/pref/channel-prefs.js
+lib/firefox/defaults/pref/services-sync.js
+lib/firefox/dependentlibs.list
+lib/firefox/dictionaries/en-US.aff
+lib/firefox/dictionaries/en-US.dic
+lib/firefox/firefox
+lib/firefox/firefox-bin
+lib/firefox/gmp-clearkey/0.1/clearkey.info
+lib/firefox/gmp-clearkey/0.1/libclearkey.so
+lib/firefox/greprefs.js
+lib/firefox/hyphenation/hyph_af.dic
+lib/firefox/hyphenation/hyph_bg.dic
+lib/firefox/hyphenation/hyph_ca.dic
+lib/firefox/hyphenation/hyph_cy.dic
+lib/firefox/hyphenation/hyph_da.dic
+lib/firefox/hyphenation/hyph_de-1901.dic
+lib/firefox/hyphenation/hyph_de-1996.dic
+lib/firefox/hyphenation/hyph_de-CH.dic
+lib/firefox/hyphenation/hyph_en_US.dic
+lib/firefox/hyphenation/hyph_eo.dic
+lib/firefox/hyphenation/hyph_es.dic
+lib/firefox/hyphenation/hyph_et.dic
+lib/firefox/hyphenation/hyph_fi.dic
+lib/firefox/hyphenation/hyph_fr.dic
+lib/firefox/hyphenation/hyph_gl.dic
+lib/firefox/hyphenation/hyph_hr.dic
+lib/firefox/hyphenation/hyph_hsb.dic
+lib/firefox/hyphenation/hyph_hu.dic
+lib/firefox/hyphenation/hyph_ia.dic
+lib/firefox/hyphenation/hyph_is.dic
+lib/firefox/hyphenation/hyph_it.dic
+lib/firefox/hyphenation/hyph_kmr.dic
+lib/firefox/hyphenation/hyph_la.dic
+lib/firefox/hyphenation/hyph_lt.dic
+lib/firefox/hyphenation/hyph_mn.dic
+lib/firefox/hyphenation/hyph_nb.dic
+lib/firefox/hyphenation/hyph_nl.dic
+lib/firefox/hyphenation/hyph_nn.dic
+lib/firefox/hyphenation/hyph_pl.dic
+lib/firefox/hyphenation/hyph_pt.dic
+lib/firefox/hyphenation/hyph_ru.dic
+lib/firefox/hyphenation/hyph_sh.dic
+lib/firefox/hyphenation/hyph_sl.dic
+lib/firefox/hyphenation/hyph_sv.dic
+lib/firefox/hyphenation/hyph_tr.dic
+lib/firefox/hyphenation/hyph_uk.dic
+lib/firefox/liblgpllibs.so
+lib/firefox/libmozavcodec.so
+lib/firefox/libmozavutil.so
+lib/firefox/libmozsqlite3.so
+lib/firefox/libxul.so
+lib/firefox/modules/AboutReader.jsm
+lib/firefox/modules/ActivitiesService.jsm
+lib/firefox/modules/ActivitiesServiceFilter.jsm
+lib/firefox/modules/AddonManager.jsm
+lib/firefox/modules/AddonWatcher.jsm
+lib/firefox/modules/AlarmDB.jsm
+lib/firefox/modules/AlarmService.jsm
+lib/firefox/modules/AppConstants.jsm
+lib/firefox/modules/AppDownloadManager.jsm
+lib/firefox/modules/AppsServiceChild.jsm
+lib/firefox/modules/AppsUtils.jsm
+lib/firefox/modules/AsyncPrefs.jsm
+lib/firefox/modules/AsyncShutdown.jsm
+lib/firefox/modules/AsyncSpellCheckTestHelper.jsm
+lib/firefox/modules/AutoCompleteE10S.jsm
+lib/firefox/modules/BackgroundPageThumbs.jsm
+lib/firefox/modules/Battery.jsm
+lib/firefox/modules/BinarySearch.jsm
+lib/firefox/modules/BookmarkHTMLUtils.jsm
+lib/firefox/modules/BookmarkJSONUtils.jsm
+lib/firefox/modules/Bookmarks.jsm
+lib/firefox/modules/BrowserElementPromptService.jsm
+lib/firefox/modules/BrowserUtils.jsm
+lib/firefox/modules/CanonicalJSON.jsm
+lib/firefox/modules/CertUtils.jsm
+lib/firefox/modules/CharsetMenu.jsm
+lib/firefox/modules/ChromeManifestParser.jsm
+lib/firefox/modules/ClientID.jsm
+lib/firefox/modules/CloudSync.jsm
+lib/firefox/modules/CloudSyncAdapters.jsm
+lib/firefox/modules/CloudSyncBookmarks.jsm
+lib/firefox/modules/CloudSyncBookmarksFolderCache.jsm
+lib/firefox/modules/CloudSyncEventSource.jsm
+lib/firefox/modules/CloudSyncLocal.jsm
+lib/firefox/modules/CloudSyncPlacesWrapper.jsm
+lib/firefox/modules/CloudSyncTabs.jsm
+lib/firefox/modules/ClusterLib.js
+lib/firefox/modules/ColorAnalyzer_worker.js
+lib/firefox/modules/ColorConversion.js
+lib/firefox/modules/CommonDialog.jsm
+lib/firefox/modules/CompatWarning.jsm
+lib/firefox/modules/Console.jsm
+lib/firefox/modules/ContactDB.jsm
+lib/firefox/modules/ContactService.jsm
+lib/firefox/modules/ContentPrefInstance.jsm
+lib/firefox/modules/ContentPrefService2.jsm
+lib/firefox/modules/ContentPrefServiceChild.jsm
+lib/firefox/modules/ContentPrefServiceParent.jsm
+lib/firefox/modules/ContentPrefStore.jsm
+lib/firefox/modules/ContentPrefUtils.jsm
+lib/firefox/modules/CrashMonitor.jsm
+lib/firefox/modules/Credentials.jsm
+lib/firefox/modules/DNSPacket.jsm
+lib/firefox/modules/DNSRecord.jsm
+lib/firefox/modules/DNSResourceRecord.jsm
+lib/firefox/modules/DNSTypes.jsm
+lib/firefox/modules/DOMRequestHelper.jsm
+lib/firefox/modules/DataReader.jsm
+lib/firefox/modules/DataWriter.jsm
+lib/firefox/modules/DeferredSave.jsm
+lib/firefox/modules/DeferredTask.jsm
+lib/firefox/modules/Deprecated.jsm
+lib/firefox/modules/DownloadCore.jsm
+lib/firefox/modules/DownloadImport.jsm
+lib/firefox/modules/DownloadIntegration.jsm
+lib/firefox/modules/DownloadLastDir.jsm
+lib/firefox/modules/DownloadList.jsm
+lib/firefox/modules/DownloadPaths.jsm
+lib/firefox/modules/DownloadStore.jsm
+lib/firefox/modules/DownloadTaskbarProgress.jsm
+lib/firefox/modules/DownloadUIHelper.jsm
+lib/firefox/modules/DownloadUtils.jsm
+lib/firefox/modules/Downloads.jsm
+lib/firefox/modules/Extension.jsm
+lib/firefox/modules/ExtensionContent.jsm
+lib/firefox/modules/ExtensionManagement.jsm
+lib/firefox/modules/ExtensionStorage.jsm
+lib/firefox/modules/ExtensionUtils.jsm
+lib/firefox/modules/FileUtils.jsm
+lib/firefox/modules/Finder.jsm
+lib/firefox/modules/ForgetAboutSite.jsm
+lib/firefox/modules/FormAutofill.jsm
+lib/firefox/modules/FormAutofillIntegration.jsm
+lib/firefox/modules/FormData.jsm
+lib/firefox/modules/FormHistory.jsm
+lib/firefox/modules/FreeSpaceWatcher.jsm
+lib/firefox/modules/FxAccounts.jsm
+lib/firefox/modules/FxAccountsClient.jsm
+lib/firefox/modules/FxAccountsCommon.js
+lib/firefox/modules/FxAccountsOAuthClient.jsm
+lib/firefox/modules/FxAccountsOAuthGrantClient.jsm
+lib/firefox/modules/FxAccountsProfile.jsm
+lib/firefox/modules/FxAccountsProfileClient.jsm
+lib/firefox/modules/FxAccountsPush.js
+lib/firefox/modules/FxAccountsStorage.jsm
+lib/firefox/modules/FxAccountsWebChannel.jsm
+lib/firefox/modules/GMPInstallManager.jsm
+lib/firefox/modules/GMPUtils.jsm
+lib/firefox/modules/Geometry.jsm
+lib/firefox/modules/History.jsm
+lib/firefox/modules/Http.jsm
+lib/firefox/modules/ISO8601DateUtils.jsm
+lib/firefox/modules/ImageObjectProcessor.jsm
+lib/firefox/modules/ImportExport.jsm
+lib/firefox/modules/IndexedDBHelper.jsm
+lib/firefox/modules/InlineSpellChecker.jsm
+lib/firefox/modules/InlineSpellCheckerContent.jsm
+lib/firefox/modules/InsecurePasswordUtils.jsm
+lib/firefox/modules/Integration.jsm
+lib/firefox/modules/Keyboard.jsm
+lib/firefox/modules/Langpacks.jsm
+lib/firefox/modules/LightweightThemeConsumer.jsm
+lib/firefox/modules/LightweightThemeManager.jsm
+lib/firefox/modules/LoadContextInfo.jsm
+lib/firefox/modules/Locale.jsm
+lib/firefox/modules/Log.jsm
+lib/firefox/modules/LoginDoorhangers.jsm
+lib/firefox/modules/LoginHelper.jsm
+lib/firefox/modules/LoginImport.jsm
+lib/firefox/modules/LoginManagerContent.jsm
+lib/firefox/modules/LoginManagerContextMenu.jsm
+lib/firefox/modules/LoginManagerParent.jsm
+lib/firefox/modules/LoginRecipes.jsm
+lib/firefox/modules/LoginStore.jsm
+lib/firefox/modules/ManifestFinder.jsm
+lib/firefox/modules/ManifestObtainer.jsm
+lib/firefox/modules/ManifestProcessor.jsm
+lib/firefox/modules/MatchPattern.jsm
+lib/firefox/modules/MessageBroadcaster.jsm
+lib/firefox/modules/MessageChannel.jsm
+lib/firefox/modules/Microformats.js
+lib/firefox/modules/MozSocialAPI.jsm
+lib/firefox/modules/MulticastDNS.jsm
+lib/firefox/modules/NetUtil.jsm
+lib/firefox/modules/NewTabUtils.jsm
+lib/firefox/modules/NotificationDB.jsm
+lib/firefox/modules/OSCrypto.jsm
+lib/firefox/modules/ObjectUtils.jsm
+lib/firefox/modules/OfflineCacheInstaller.jsm
+lib/firefox/modules/OperatorApps.jsm
+lib/firefox/modules/PageMenu.jsm
+lib/firefox/modules/PageMetadata.jsm
+lib/firefox/modules/PageThumbUtils.jsm
+lib/firefox/modules/PageThumbs.jsm
+lib/firefox/modules/PageThumbsWorker.js
+lib/firefox/modules/Payment.jsm
+lib/firefox/modules/PerfMeasurement.jsm
+lib/firefox/modules/PerformanceStats-content.js
+lib/firefox/modules/PerformanceStats.jsm
+lib/firefox/modules/PerformanceWatcher-content.js
+lib/firefox/modules/PerformanceWatcher.jsm
+lib/firefox/modules/PermissionSettings.jsm
+lib/firefox/modules/PermissionsInstaller.jsm
+lib/firefox/modules/PermissionsTable.jsm
+lib/firefox/modules/PermissionsUtils.jsm
+lib/firefox/modules/PhoneNumber.jsm
+lib/firefox/modules/PhoneNumberMetaData.jsm
+lib/firefox/modules/PhoneNumberNormalizer.jsm
+lib/firefox/modules/PhoneNumberUtils.jsm
+lib/firefox/modules/PlacesBackups.jsm
+lib/firefox/modules/PlacesDBUtils.jsm
+lib/firefox/modules/PlacesRemoteTabsAutocompleteProvider.jsm
+lib/firefox/modules/PlacesSearchAutocompleteProvider.jsm
+lib/firefox/modules/PlacesTransactions.jsm
+lib/firefox/modules/PlacesUtils.jsm
+lib/firefox/modules/PluralForm.jsm
+lib/firefox/modules/PopupNotifications.jsm
+lib/firefox/modules/Preferences.jsm
+lib/firefox/modules/Prefetcher.jsm
+lib/firefox/modules/PresentationApp.jsm
+lib/firefox/modules/PresentationDeviceInfoManager.jsm
+lib/firefox/modules/PrivateBrowsingUtils.jsm
+lib/firefox/modules/ProfileAge.jsm
+lib/firefox/modules/Promise-backend.js
+lib/firefox/modules/Promise.jsm
+lib/firefox/modules/PromiseMessage.jsm
+lib/firefox/modules/PromiseUtils.jsm
+lib/firefox/modules/PromiseWorker.jsm
+lib/firefox/modules/PropertyListUtils.jsm
+lib/firefox/modules/PushCrypto.jsm
+lib/firefox/modules/PushDB.jsm
+lib/firefox/modules/PushRecord.jsm
+lib/firefox/modules/PushService.jsm
+lib/firefox/modules/PushServiceHttp2.jsm
+lib/firefox/modules/PushServiceWebSocket.jsm
+lib/firefox/modules/ReaderMode.jsm
+lib/firefox/modules/RemoteAddonsChild.jsm
+lib/firefox/modules/RemoteAddonsParent.jsm
+lib/firefox/modules/RemoteController.jsm
+lib/firefox/modules/RemoteFinder.jsm
+lib/firefox/modules/RemotePageManager.jsm
+lib/firefox/modules/RemoteSecurityUI.jsm
+lib/firefox/modules/RemoteWebProgress.jsm
+lib/firefox/modules/RequestAutocompleteUI.jsm
+lib/firefox/modules/ResetProfile.jsm
+lib/firefox/modules/ResourceStatsDB.jsm
+lib/firefox/modules/ResourceStatsService.jsm
+lib/firefox/modules/RokuApp.jsm
+lib/firefox/modules/SafeBrowsing.jsm
+lib/firefox/modules/Schemas.jsm
+lib/firefox/modules/ScriptPreloader.jsm
+lib/firefox/modules/ScrollPosition.jsm
+lib/firefox/modules/SearchStaticData.jsm
+lib/firefox/modules/SearchSuggestionController.jsm
+lib/firefox/modules/SelectContentHelper.jsm
+lib/firefox/modules/SelectParentHelper.jsm
+lib/firefox/modules/Services.jsm
+lib/firefox/modules/SessionRecorder.jsm
+lib/firefox/modules/SettingsDB.jsm
+lib/firefox/modules/SettingsRequestManager.jsm
+lib/firefox/modules/SharedPromptUtils.jsm
+lib/firefox/modules/ShimWaiver.jsm
+lib/firefox/modules/ShortcutUtils.jsm
+lib/firefox/modules/SimpleServiceDiscovery.jsm
+lib/firefox/modules/Sntp.jsm
+lib/firefox/modules/SocialService.jsm
+lib/firefox/modules/SpatialNavigation.jsm
+lib/firefox/modules/Sqlite.jsm
+lib/firefox/modules/StoreTrustAnchor.jsm
+lib/firefox/modules/Subprocess.jsm
+lib/firefox/modules/SystemMessagePermissionsChecker.jsm
+lib/firefox/modules/SystemUpdateService.jsm
+lib/firefox/modules/Task.jsm
+lib/firefox/modules/TelemetryArchive.jsm
+lib/firefox/modules/TelemetryController.jsm
+lib/firefox/modules/TelemetryEnvironment.jsm
+lib/firefox/modules/TelemetryLog.jsm
+lib/firefox/modules/TelemetryReportingPolicy.jsm
+lib/firefox/modules/TelemetrySend.jsm
+lib/firefox/modules/TelemetrySession.jsm
+lib/firefox/modules/TelemetryStopwatch.jsm
+lib/firefox/modules/TelemetryStorage.jsm
+lib/firefox/modules/TelemetryTimestamps.jsm
+lib/firefox/modules/TelemetryUtils.jsm
+lib/firefox/modules/ThirdPartyCookieProbe.jsm
+lib/firefox/modules/Timer.jsm
+lib/firefox/modules/Troubleshoot.jsm
+lib/firefox/modules/UITelemetry.jsm
+lib/firefox/modules/UpdateUtils.jsm
+lib/firefox/modules/UserAgentOverrides.jsm
+lib/firefox/modules/UserAgentUpdates.jsm
+lib/firefox/modules/UserCustomizations.jsm
+lib/firefox/modules/ValueExtractor.jsm
+lib/firefox/modules/ViewSourceBrowser.jsm
+lib/firefox/modules/WebChannel.jsm
+lib/firefox/modules/WebNavigation.jsm
+lib/firefox/modules/WebNavigationContent.js
+lib/firefox/modules/WebNavigationFrames.jsm
+lib/firefox/modules/WebRequest.jsm
+lib/firefox/modules/WebRequestCommon.jsm
+lib/firefox/modules/WebRequestContent.js
+lib/firefox/modules/Webapps.jsm
+lib/firefox/modules/WindowDraggingUtils.jsm
+lib/firefox/modules/XPCOMUtils.jsm
+lib/firefox/modules/XPathGenerator.jsm
+lib/firefox/modules/ZipUtils.jsm
+lib/firefox/modules/accessibility/AccessFu.jsm
+lib/firefox/modules/accessibility/Constants.jsm
+lib/firefox/modules/accessibility/ContentControl.jsm
+lib/firefox/modules/accessibility/EventManager.jsm
+lib/firefox/modules/accessibility/Gestures.jsm
+lib/firefox/modules/accessibility/OutputGenerator.jsm
+lib/firefox/modules/accessibility/PointerAdapter.jsm
+lib/firefox/modules/accessibility/Presentation.jsm
+lib/firefox/modules/accessibility/Traversal.jsm
+lib/firefox/modules/accessibility/Utils.jsm
+lib/firefox/modules/addons/AddonConstants.jsm
+lib/firefox/modules/addons/AddonLogging.jsm
+lib/firefox/modules/addons/AddonRepository.jsm
+lib/firefox/modules/addons/AddonRepository_SQLiteMigrator.jsm
+lib/firefox/modules/addons/AddonUpdateChecker.jsm
+lib/firefox/modules/addons/Content.js
+lib/firefox/modules/addons/E10SAddonsRollout.jsm
+lib/firefox/modules/addons/GMPProvider.jsm
+lib/firefox/modules/addons/LightweightThemeImageOptimizer.jsm
+lib/firefox/modules/addons/PluginProvider.jsm
+lib/firefox/modules/addons/ProductAddonChecker.jsm
+lib/firefox/modules/addons/SpellCheckDictionaryBootstrap.js
+lib/firefox/modules/addons/WebExtensionBootstrap.js
+lib/firefox/modules/addons/XPIProvider.jsm
+lib/firefox/modules/addons/XPIProviderUtils.js
+lib/firefox/modules/commonjs/dev/debuggee.js
+lib/firefox/modules/commonjs/dev/frame-script.js
+lib/firefox/modules/commonjs/dev/panel.js
+lib/firefox/modules/commonjs/dev/panel/view.js
+lib/firefox/modules/commonjs/dev/ports.js
+lib/firefox/modules/commonjs/dev/theme.js
+lib/firefox/modules/commonjs/dev/theme/hooks.js
+lib/firefox/modules/commonjs/dev/toolbox.js
+lib/firefox/modules/commonjs/dev/utils.js
+lib/firefox/modules/commonjs/dev/volcan.js
+lib/firefox/modules/commonjs/diffpatcher/diff.js
+lib/firefox/modules/commonjs/diffpatcher/index.js
+lib/firefox/modules/commonjs/diffpatcher/patch.js
+lib/firefox/modules/commonjs/diffpatcher/rebase.js
+lib/firefox/modules/commonjs/diffpatcher/test/common.js
+lib/firefox/modules/commonjs/diffpatcher/test/diff.js
+lib/firefox/modules/commonjs/diffpatcher/test/index.js
+lib/firefox/modules/commonjs/diffpatcher/test/patch.js
+lib/firefox/modules/commonjs/diffpatcher/test/tap.js
+lib/firefox/modules/commonjs/framescript/FrameScriptManager.jsm
+lib/firefox/modules/commonjs/framescript/content.jsm
+lib/firefox/modules/commonjs/framescript/context-menu.js
+lib/firefox/modules/commonjs/framescript/manager.js
+lib/firefox/modules/commonjs/framescript/util.js
+lib/firefox/modules/commonjs/index.js
+lib/firefox/modules/commonjs/jetpack-id/index.js
+lib/firefox/modules/commonjs/method/core.js
+lib/firefox/modules/commonjs/method/test/browser.js
+lib/firefox/modules/commonjs/method/test/common.js
+lib/firefox/modules/commonjs/mozilla-toolkit-versioning/index.js
+lib/firefox/modules/commonjs/mozilla-toolkit-versioning/lib/utils.js
+lib/firefox/modules/commonjs/node/os.js
+lib/firefox/modules/commonjs/sdk/addon/bootstrap.js
+lib/firefox/modules/commonjs/sdk/addon/events.js
+lib/firefox/modules/commonjs/sdk/addon/host.js
+lib/firefox/modules/commonjs/sdk/addon/installer.js
+lib/firefox/modules/commonjs/sdk/addon/manager.js
+lib/firefox/modules/commonjs/sdk/addon/runner.js
+lib/firefox/modules/commonjs/sdk/addon/window.js
+lib/firefox/modules/commonjs/sdk/base64.js
+lib/firefox/modules/commonjs/sdk/browser/events.js
+lib/firefox/modules/commonjs/sdk/clipboard.js
+lib/firefox/modules/commonjs/sdk/console/plain-text.js
+lib/firefox/modules/commonjs/sdk/console/traceback.js
+lib/firefox/modules/commonjs/sdk/content/content-worker.js
+lib/firefox/modules/commonjs/sdk/content/content.js
+lib/firefox/modules/commonjs/sdk/content/context-menu.js
+lib/firefox/modules/commonjs/sdk/content/events.js
+lib/firefox/modules/commonjs/sdk/content/l10n-html.js
+lib/firefox/modules/commonjs/sdk/content/loader.js
+lib/firefox/modules/commonjs/sdk/content/mod.js
+lib/firefox/modules/commonjs/sdk/content/page-mod.js
+lib/firefox/modules/commonjs/sdk/content/page-worker.js
+lib/firefox/modules/commonjs/sdk/content/sandbox.js
+lib/firefox/modules/commonjs/sdk/content/sandbox/events.js
+lib/firefox/modules/commonjs/sdk/content/tab-events.js
+lib/firefox/modules/commonjs/sdk/content/thumbnail.js
+lib/firefox/modules/commonjs/sdk/content/utils.js
+lib/firefox/modules/commonjs/sdk/content/worker-child.js
+lib/firefox/modules/commonjs/sdk/content/worker.js
+lib/firefox/modules/commonjs/sdk/context-menu.js
+lib/firefox/modules/commonjs/sdk/context-menu/context.js
+lib/firefox/modules/commonjs/sdk/context-menu/core.js
+lib/firefox/modules/commonjs/sdk/context-menu/readers.js
+lib/firefox/modules/commonjs/sdk/context-menu%2.js@localhost
+lib/firefox/modules/commonjs/sdk/core/disposable.js
+lib/firefox/modules/commonjs/sdk/core/heritage.js
+lib/firefox/modules/commonjs/sdk/core/namespace.js
+lib/firefox/modules/commonjs/sdk/core/observer.js
+lib/firefox/modules/commonjs/sdk/core/promise.js
+lib/firefox/modules/commonjs/sdk/core/reference.js
+lib/firefox/modules/commonjs/sdk/deprecated/api-utils.js
+lib/firefox/modules/commonjs/sdk/deprecated/events/assembler.js
+lib/firefox/modules/commonjs/sdk/deprecated/sync-worker.js
+lib/firefox/modules/commonjs/sdk/deprecated/unit-test-finder.js
+lib/firefox/modules/commonjs/sdk/deprecated/unit-test.js
+lib/firefox/modules/commonjs/sdk/deprecated/window-utils.js
+lib/firefox/modules/commonjs/sdk/dom/events-shimmed.js
+lib/firefox/modules/commonjs/sdk/dom/events.js
+lib/firefox/modules/commonjs/sdk/dom/events/keys.js
+lib/firefox/modules/commonjs/sdk/event/chrome.js
+lib/firefox/modules/commonjs/sdk/event/core.js
+lib/firefox/modules/commonjs/sdk/event/dom.js
+lib/firefox/modules/commonjs/sdk/event/target.js
+lib/firefox/modules/commonjs/sdk/event/utils.js
+lib/firefox/modules/commonjs/sdk/frame/hidden-frame.js
+lib/firefox/modules/commonjs/sdk/frame/utils.js
+lib/firefox/modules/commonjs/sdk/fs/path.js
+lib/firefox/modules/commonjs/sdk/hotkeys.js
+lib/firefox/modules/commonjs/sdk/indexed-db.js
+lib/firefox/modules/commonjs/sdk/input/browser.js
+lib/firefox/modules/commonjs/sdk/input/customizable-ui.js
+lib/firefox/modules/commonjs/sdk/input/frame.js
+lib/firefox/modules/commonjs/sdk/input/system.js
+lib/firefox/modules/commonjs/sdk/io/buffer.js
+lib/firefox/modules/commonjs/sdk/io/byte-streams.js
+lib/firefox/modules/commonjs/sdk/io/file.js
+lib/firefox/modules/commonjs/sdk/io/fs.js
+lib/firefox/modules/commonjs/sdk/io/stream.js
+lib/firefox/modules/commonjs/sdk/io/text-streams.js
+lib/firefox/modules/commonjs/sdk/keyboard/hotkeys.js
+lib/firefox/modules/commonjs/sdk/keyboard/observer.js
+lib/firefox/modules/commonjs/sdk/keyboard/utils.js
+lib/firefox/modules/commonjs/sdk/l10n.js
+lib/firefox/modules/commonjs/sdk/l10n/core.js
+lib/firefox/modules/commonjs/sdk/l10n/html.js
+lib/firefox/modules/commonjs/sdk/l10n/json/core.js
+lib/firefox/modules/commonjs/sdk/l10n/loader.js
+lib/firefox/modules/commonjs/sdk/l10n/locale.js
+lib/firefox/modules/commonjs/sdk/l10n/plural-rules.js
+lib/firefox/modules/commonjs/sdk/l10n/prefs.js
+lib/firefox/modules/commonjs/sdk/l10n/properties/core.js
+lib/firefox/modules/commonjs/sdk/lang/functional.js
+lib/firefox/modules/commonjs/sdk/lang/functional/concurrent.js
+lib/firefox/modules/commonjs/sdk/lang/functional/core.js
+lib/firefox/modules/commonjs/sdk/lang/functional/helpers.js
+lib/firefox/modules/commonjs/sdk/lang/type.js
+lib/firefox/modules/commonjs/sdk/lang/weak-set.js
+lib/firefox/modules/commonjs/sdk/loader/cuddlefish.js
+lib/firefox/modules/commonjs/sdk/loader/sandbox.js
+lib/firefox/modules/commonjs/sdk/messaging.js
+lib/firefox/modules/commonjs/sdk/model/core.js
+lib/firefox/modules/commonjs/sdk/net/url.js
+lib/firefox/modules/commonjs/sdk/net/xhr.js
+lib/firefox/modules/commonjs/sdk/notifications.js
+lib/firefox/modules/commonjs/sdk/output/system.js
+lib/firefox/modules/commonjs/sdk/page-mod.js
+lib/firefox/modules/commonjs/sdk/page-mod/match-pattern.js
+lib/firefox/modules/commonjs/sdk/page-worker.js
+lib/firefox/modules/commonjs/sdk/panel.js
+lib/firefox/modules/commonjs/sdk/panel/events.js
+lib/firefox/modules/commonjs/sdk/panel/utils.js
+lib/firefox/modules/commonjs/sdk/passwords.js
+lib/firefox/modules/commonjs/sdk/passwords/utils.js
+lib/firefox/modules/commonjs/sdk/places/bookmarks.js
+lib/firefox/modules/commonjs/sdk/places/contract.js
+lib/firefox/modules/commonjs/sdk/places/events.js
+lib/firefox/modules/commonjs/sdk/places/favicon.js
+lib/firefox/modules/commonjs/sdk/places/history.js
+lib/firefox/modules/commonjs/sdk/places/host/host-bookmarks.js
+lib/firefox/modules/commonjs/sdk/places/host/host-query.js
+lib/firefox/modules/commonjs/sdk/places/host/host-tags.js
+lib/firefox/modules/commonjs/sdk/places/utils.js
+lib/firefox/modules/commonjs/sdk/platform/xpcom.js
+lib/firefox/modules/commonjs/sdk/preferences/event-target.js
+lib/firefox/modules/commonjs/sdk/preferences/native-options.js
+lib/firefox/modules/commonjs/sdk/preferences/service.js
+lib/firefox/modules/commonjs/sdk/preferences/utils.js
+lib/firefox/modules/commonjs/sdk/private-browsing.js
+lib/firefox/modules/commonjs/sdk/private-browsing/utils.js
+lib/firefox/modules/commonjs/sdk/querystring.js
+lib/firefox/modules/commonjs/sdk/remote/child.js
+lib/firefox/modules/commonjs/sdk/remote/core.js
+lib/firefox/modules/commonjs/sdk/remote/parent.js
+lib/firefox/modules/commonjs/sdk/remote/utils.js
+lib/firefox/modules/commonjs/sdk/request.js
+lib/firefox/modules/commonjs/sdk/selection.js
+lib/firefox/modules/commonjs/sdk/self.js
+lib/firefox/modules/commonjs/sdk/simple-prefs.js
+lib/firefox/modules/commonjs/sdk/simple-storage.js
+lib/firefox/modules/commonjs/sdk/stylesheet/style.js
+lib/firefox/modules/commonjs/sdk/stylesheet/utils.js
+lib/firefox/modules/commonjs/sdk/system.js
+lib/firefox/modules/commonjs/sdk/system/child_process.js
+lib/firefox/modules/commonjs/sdk/system/child_process/subprocess.js
+lib/firefox/modules/commonjs/sdk/system/child_process/subprocess_worker_unix.js
+lib/firefox/modules/commonjs/sdk/system/child_process/subprocess_worker_win.js
+lib/firefox/modules/commonjs/sdk/system/environment.js
+lib/firefox/modules/commonjs/sdk/system/events-shimmed.js
+lib/firefox/modules/commonjs/sdk/system/events.js
+lib/firefox/modules/commonjs/sdk/system/globals.js
+lib/firefox/modules/commonjs/sdk/system/process.js
+lib/firefox/modules/commonjs/sdk/system/runtime.js
+lib/firefox/modules/commonjs/sdk/system/unload.js
+lib/firefox/modules/commonjs/sdk/system/xul-app.js
+lib/firefox/modules/commonjs/sdk/system/xul-app.jsm
+lib/firefox/modules/commonjs/sdk/tab/events.js
+lib/firefox/modules/commonjs/sdk/tabs.js
+lib/firefox/modules/commonjs/sdk/tabs/common.js
+lib/firefox/modules/commonjs/sdk/tabs/events.js
+lib/firefox/modules/commonjs/sdk/tabs/helpers.js
+lib/firefox/modules/commonjs/sdk/tabs/namespace.js
+lib/firefox/modules/commonjs/sdk/tabs/observer.js
+lib/firefox/modules/commonjs/sdk/tabs/tab-fennec.js
+lib/firefox/modules/commonjs/sdk/tabs/tab-firefox.js
+lib/firefox/modules/commonjs/sdk/tabs/tab.js
+lib/firefox/modules/commonjs/sdk/tabs/tabs-firefox.js
+lib/firefox/modules/commonjs/sdk/tabs/utils.js
+lib/firefox/modules/commonjs/sdk/tabs/worker.js
+lib/firefox/modules/commonjs/sdk/test.js
+lib/firefox/modules/commonjs/sdk/test/assert.js
+lib/firefox/modules/commonjs/sdk/test/harness.js
+lib/firefox/modules/commonjs/sdk/test/httpd.js
+lib/firefox/modules/commonjs/sdk/test/loader.js
+lib/firefox/modules/commonjs/sdk/test/memory.js
+lib/firefox/modules/commonjs/sdk/test/options.js
+lib/firefox/modules/commonjs/sdk/test/runner.js
+lib/firefox/modules/commonjs/sdk/test/utils.js
+lib/firefox/modules/commonjs/sdk/timers.js
+lib/firefox/modules/commonjs/sdk/ui.js
+lib/firefox/modules/commonjs/sdk/ui/button/action.js
+lib/firefox/modules/commonjs/sdk/ui/button/contract.js
+lib/firefox/modules/commonjs/sdk/ui/button/toggle.js
+lib/firefox/modules/commonjs/sdk/ui/button/view.js
+lib/firefox/modules/commonjs/sdk/ui/button/view/events.js
+lib/firefox/modules/commonjs/sdk/ui/component.js
+lib/firefox/modules/commonjs/sdk/ui/frame.js
+lib/firefox/modules/commonjs/sdk/ui/frame/model.js
+lib/firefox/modules/commonjs/sdk/ui/frame/view.html
+lib/firefox/modules/commonjs/sdk/ui/frame/view.js
+lib/firefox/modules/commonjs/sdk/ui/id.js
+lib/firefox/modules/commonjs/sdk/ui/sidebar.js
+lib/firefox/modules/commonjs/sdk/ui/sidebar/actions.js
+lib/firefox/modules/commonjs/sdk/ui/sidebar/contract.js
+lib/firefox/modules/commonjs/sdk/ui/sidebar/namespace.js
+lib/firefox/modules/commonjs/sdk/ui/sidebar/utils.js
+lib/firefox/modules/commonjs/sdk/ui/sidebar/view.js
+lib/firefox/modules/commonjs/sdk/ui/state.js
+lib/firefox/modules/commonjs/sdk/ui/state/events.js
+lib/firefox/modules/commonjs/sdk/ui/toolbar.js
+lib/firefox/modules/commonjs/sdk/ui/toolbar/model.js
+lib/firefox/modules/commonjs/sdk/ui/toolbar/view.js
+lib/firefox/modules/commonjs/sdk/uri/resource.js
+lib/firefox/modules/commonjs/sdk/url.js
+lib/firefox/modules/commonjs/sdk/url/utils.js
+lib/firefox/modules/commonjs/sdk/util/array.js
+lib/firefox/modules/commonjs/sdk/util/collection.js
+lib/firefox/modules/commonjs/sdk/util/contract.js
+lib/firefox/modules/commonjs/sdk/util/deprecate.js
+lib/firefox/modules/commonjs/sdk/util/dispatcher.js
+lib/firefox/modules/commonjs/sdk/util/list.js
+lib/firefox/modules/commonjs/sdk/util/match-pattern.js
+lib/firefox/modules/commonjs/sdk/util/object.js
+lib/firefox/modules/commonjs/sdk/util/rules.js
+lib/firefox/modules/commonjs/sdk/util/sequence.js
+lib/firefox/modules/commonjs/sdk/util/uuid.js
+lib/firefox/modules/commonjs/sdk/view/core.js
+lib/firefox/modules/commonjs/sdk/window/browser.js
+lib/firefox/modules/commonjs/sdk/window/events.js
+lib/firefox/modules/commonjs/sdk/window/helpers.js
+lib/firefox/modules/commonjs/sdk/window/namespace.js
+lib/firefox/modules/commonjs/sdk/window/utils.js
+lib/firefox/modules/commonjs/sdk/windows.js
+lib/firefox/modules/commonjs/sdk/windows/fennec.js
+lib/firefox/modules/commonjs/sdk/windows/firefox.js
+lib/firefox/modules/commonjs/sdk/windows/observer.js
+lib/firefox/modules/commonjs/sdk/windows/tabs-fennec.js
+lib/firefox/modules/commonjs/sdk/worker/utils.js
+lib/firefox/modules/commonjs/sdk/zip/utils.js
+lib/firefox/modules/commonjs/test.js
+lib/firefox/modules/commonjs/toolkit/loader.js
+lib/firefox/modules/commonjs/toolkit/require.js
+lib/firefox/modules/ctypes.jsm
+lib/firefox/modules/debug.js
+lib/firefox/modules/devtools/Console.jsm
+lib/firefox/modules/devtools/Loader.jsm
+lib/firefox/modules/devtools/Simulator.jsm
+lib/firefox/modules/devtools/dbg-client.jsm
+lib/firefox/modules/devtools/dbg-server.jsm
+lib/firefox/modules/devtools/event-emitter.js
+lib/firefox/modules/devtools/shared/Console.jsm
+lib/firefox/modules/devtools/shared/Loader.jsm
+lib/firefox/modules/devtools/shared/apps/Simulator.jsm
+lib/firefox/modules/identity/FirefoxAccounts.jsm
+lib/firefox/modules/identity/Identity.jsm
+lib/firefox/modules/identity/IdentityProvider.jsm
+lib/firefox/modules/identity/IdentityStore.jsm
+lib/firefox/modules/identity/IdentityUtils.jsm
+lib/firefox/modules/identity/LogUtils.jsm
+lib/firefox/modules/identity/MinimalIdentity.jsm
+lib/firefox/modules/identity/RelyingParty.jsm
+lib/firefox/modules/identity/Sandbox.jsm
+lib/firefox/modules/identity/jwcrypto.jsm
+lib/firefox/modules/jsdebugger.jsm
+lib/firefox/modules/lz4.js
+lib/firefox/modules/lz4_internal.js
+lib/firefox/modules/mcc_iso3166_table.jsm
+lib/firefox/modules/media/IdpSandbox.jsm
+lib/firefox/modules/media/PeerConnectionIdp.jsm
+lib/firefox/modules/media/RTCStatsReport.jsm
+lib/firefox/modules/microformat-shiv.js
+lib/firefox/modules/narrate/NarrateControls.jsm
+lib/firefox/modules/narrate/Narrator.jsm
+lib/firefox/modules/narrate/VoiceSelect.jsm
+lib/firefox/modules/nsFormAutoCompleteResult.jsm
+lib/firefox/modules/osfile.jsm
+lib/firefox/modules/osfile/osfile_async_front.jsm
+lib/firefox/modules/osfile/osfile_async_worker.js
+lib/firefox/modules/osfile/osfile_native.jsm
+lib/firefox/modules/osfile/osfile_shared_allthreads.jsm
+lib/firefox/modules/osfile/osfile_shared_front.jsm
+lib/firefox/modules/osfile/osfile_unix_allthreads.jsm
+lib/firefox/modules/osfile/osfile_unix_back.jsm
+lib/firefox/modules/osfile/osfile_unix_front.jsm
+lib/firefox/modules/osfile/osfile_win_allthreads.jsm
+lib/firefox/modules/osfile/osfile_win_back.jsm
+lib/firefox/modules/osfile/osfile_win_front.jsm
+lib/firefox/modules/osfile/ospath.jsm
+lib/firefox/modules/osfile/ospath_unix.jsm
+lib/firefox/modules/osfile/ospath_win.jsm
+lib/firefox/modules/reader/JSDOMParser.js
+lib/firefox/modules/reader/Readability.js
+lib/firefox/modules/reader/ReaderWorker.js
+lib/firefox/modules/reader/ReaderWorker.jsm
+lib/firefox/modules/reflect.jsm
+lib/firefox/modules/sdk/bootstrap.js
+lib/firefox/modules/sdk/system/Startup.js
+lib/firefox/modules/services-common/async.js
+lib/firefox/modules/services-common/blocklist-clients.js
+lib/firefox/modules/services-common/blocklist-updater.js
+lib/firefox/modules/services-common/hawkclient.js
+lib/firefox/modules/services-common/hawkrequest.js
+lib/firefox/modules/services-common/kinto-http-client.js
+lib/firefox/modules/services-common/kinto-offline-client.js
+lib/firefox/modules/services-common/logmanager.js
+lib/firefox/modules/services-common/observers.js
+lib/firefox/modules/services-common/rest.js
+lib/firefox/modules/services-common/stringbundle.js
+lib/firefox/modules/services-common/tokenserverclient.js
+lib/firefox/modules/services-common/utils.js
+lib/firefox/modules/services-crypto/WeaveCrypto.js
+lib/firefox/modules/services-crypto/utils.js
+lib/firefox/modules/services-sync/FxaMigrator.jsm
+lib/firefox/modules/services-sync/SyncedTabs.jsm
+lib/firefox/modules/services-sync/addonsreconciler.js
+lib/firefox/modules/services-sync/addonutils.js
+lib/firefox/modules/services-sync/bookmark_utils.js
+lib/firefox/modules/services-sync/bookmark_validator.js
+lib/firefox/modules/services-sync/browserid_identity.js
+lib/firefox/modules/services-sync/constants.js
+lib/firefox/modules/services-sync/engines.js
+lib/firefox/modules/services-sync/engines/addons.js
+lib/firefox/modules/services-sync/engines/bookmarks.js
+lib/firefox/modules/services-sync/engines/clients.js
+lib/firefox/modules/services-sync/engines/forms.js
+lib/firefox/modules/services-sync/engines/history.js
+lib/firefox/modules/services-sync/engines/passwords.js
+lib/firefox/modules/services-sync/engines/prefs.js
+lib/firefox/modules/services-sync/engines/tabs.js
+lib/firefox/modules/services-sync/identity.js
+lib/firefox/modules/services-sync/jpakeclient.js
+lib/firefox/modules/services-sync/keys.js
+lib/firefox/modules/services-sync/main.js
+lib/firefox/modules/services-sync/policies.js
+lib/firefox/modules/services-sync/record.js
+lib/firefox/modules/services-sync/resource.js
+lib/firefox/modules/services-sync/rest.js
+lib/firefox/modules/services-sync/service.js
+lib/firefox/modules/services-sync/stages/cluster.js
+lib/firefox/modules/services-sync/stages/declined.js
+lib/firefox/modules/services-sync/stages/enginesync.js
+lib/firefox/modules/services-sync/status.js
+lib/firefox/modules/services-sync/userapi.js
+lib/firefox/modules/services-sync/util.js
+lib/firefox/modules/sqlite/sqlite_internal.js
+lib/firefox/modules/subprocess/subprocess_common.jsm
+lib/firefox/modules/subprocess/subprocess_shared.js
+lib/firefox/modules/subprocess/subprocess_shared_unix.js
+lib/firefox/modules/subprocess/subprocess_unix.jsm
+lib/firefox/modules/subprocess/subprocess_worker_common.js
+lib/firefox/modules/subprocess/subprocess_worker_unix.js
+lib/firefox/modules/third_party/jsesc/jsesc.js
+lib/firefox/modules/vtt.jsm
+lib/firefox/modules/workers/PromiseWorker.js
+lib/firefox/modules/workers/require.js
+lib/firefox/platform.ini
+lib/firefox/plugin-container
+lib/firefox/removed-files
+lib/firefox/res/EditorOverride.css
+lib/firefox/res/ImageDocument.css
+lib/firefox/res/TopLevelImageDocument.css
+lib/firefox/res/TopLevelVideoDocument.css
+lib/firefox/res/contenteditable.css
+lib/firefox/res/designmode.css
+lib/firefox/res/dtd/htmlmathml-f.ent
+lib/firefox/res/entityTables/html40Latin1.properties
+lib/firefox/res/entityTables/html40Special.properties
+lib/firefox/res/entityTables/html40Symbols.properties
+lib/firefox/res/entityTables/mathml20.properties
+lib/firefox/res/fonts/mathfont.properties
+lib/firefox/res/fonts/mathfontSTIXGeneral.properties
+lib/firefox/res/fonts/mathfontUnicode.properties
+lib/firefox/res/grabber.gif
+lib/firefox/res/html/folder.png
+lib/firefox/res/language.properties
+lib/firefox/res/svg.css
+lib/firefox/res/table-add-column-after-active.gif
+lib/firefox/res/table-add-column-after-hover.gif
+lib/firefox/res/table-add-column-after.gif
+lib/firefox/res/table-add-column-before-active.gif
+lib/firefox/res/table-add-column-before-hover.gif
+lib/firefox/res/table-add-column-before.gif
+lib/firefox/res/table-add-row-after-active.gif
+lib/firefox/res/table-add-row-after-hover.gif
+lib/firefox/res/table-add-row-after.gif
+lib/firefox/res/table-add-row-before-active.gif
+lib/firefox/res/table-add-row-before-hover.gif
+lib/firefox/res/table-add-row-before.gif
+lib/firefox/res/table-remove-column-active.gif
+lib/firefox/res/table-remove-column-hover.gif
+lib/firefox/res/table-remove-column.gif
+lib/firefox/res/table-remove-row-active.gif
+lib/firefox/res/table-remove-row-hover.gif
+lib/firefox/res/table-remove-row.gif
+lib/firefox/run-mozilla.sh
+share/applications/firefox.desktop
+share/pixmaps/firefox.png
diff --git a/firefox-webrtc/distinfo b/firefox-webrtc/distinfo
new file mode 100644
index 0000000..53415af
--- /dev/null
+++ b/firefox-webrtc/distinfo
@@ -0,0 +1,110 @@
+$NetBSD: distinfo,v 1.255 2016/10/26 20:23:27 ryoon Exp $
+
+SHA1 (firefox-49.0.2.source.tar.xz) = 52d527f06c522c95e2fcf4008dce1a9913379aaf
+RMD160 (firefox-49.0.2.source.tar.xz) = b0c7bda2f551ea025bb75b0f9a58722f7322ea2d
+SHA512 (firefox-49.0.2.source.tar.xz) = e9daa62c8e645ec034f1435afb579ddb5c503db313ea0cc3e48b7508f8368028979de07ca1426cc4c0f3ae82756f39dcb3b349712d520b8503a34afbd443fb1e
+Size (firefox-49.0.2.source.tar.xz) = 188669928 bytes
+SHA1 (patch-aa) = 7d2f0f38668daaaa808f68bea0c0b47dee2c8913
+SHA1 (patch-ao) = 1564bc503670dc07ec8b9b43927f0c5879f3a44d
+SHA1 (patch-as) = bebba8483c1881198066f4022a0da8f95398f38f
+SHA1 (patch-bf) = f56fce1b1e5e697ba2425655b6417b69f197f6cf
+SHA1 (patch-browser_installer_package-manifest.in) = 7c4f1822cd78a5ed465b954f4b62514c64ad7b84
+SHA1 (patch-build_autoconf_compiler-opts.m4) = ccdc06a2b07b7664f9cb91bcc4fb29052dda8b07
+SHA1 (patch-build_gyp.mozbuild) = 481270e6703e556fb87a3440cb3cfb3d4fcc4c86
+SHA1 (patch-build_moz.configure_old.configure) = 4142b710aaf2e467843b73e4575a3e72b0d2bc05
+SHA1 (patch-config_Makefile.in) = e73585126c714a3e07963cf19af1c7876e074209
+SHA1 (patch-config_baseconfig.mk) = 4ec046aea29c6c03df49246371774ed3fd082f4f
+SHA1 (patch-config_external_moz.build) = 0c9687a3c2d9fa7dee3909ba063e4fcbc9931a3e
+SHA1 (patch-config_stl__wrappers_ios) = 00d723e2f2f252485350ede5833f0bb84c1235c1
+SHA1 (patch-config_stl__wrappers_ostream) = 7be7fe36704ffbdc070a113b46b4f391a598206b
+SHA1 (patch-config_system-headers) = 85cfc060dded8b6911d645197283d58f0b00c6f8
+SHA1 (patch-config_system__wrappers_unwind.h) = b3bdac0710179b9c8f8eabd824216d0114504491
+SHA1 (patch-dom_media_moz.build) = 2389715405101004110907c33072521779b80a9d
+SHA1 (patch-dom_plugins_ipc_PluginModuleChild.cpp) = 9961e956016f274a1b9b52b489bd749e8e2bbcb6
+SHA1 (patch-dom_plugins_ipc_PluginModuleChild.h) = 15c01df2fa7f989b533ef769ce77438b5e9bfdb9
+SHA1 (patch-extensions_spellcheck_hunspell_glue_mozHunspell.cpp) = 0c1151708420bec7700724b1f298590601f1762b
+SHA1 (patch-gfx_cairo_libpixman_src_pixman-arm-neon-asm.S) = 6e91ca436b73affe42ed4e683b3400beb28c4bc6
+SHA1 (patch-gfx_gl_GLContextProviderGLX.cpp) = 2cc997cab71a84c1f50a791693519a0626564426
+SHA1 (patch-gfx_graphite2_src_Bidi.cpp) = 9b357196b795f7698f0763cb6cfcd39b4aea6420
+SHA1 (patch-gfx_skia_skia_src_core_SkUtilsArm.cpp) = 94a5a88f1177e09ef7b8dbdb6439153933004356
+SHA1 (patch-gfx_ycbcr_moz.build) = 705c36b972ef1533330e4a180002cef1c22755bf
+SHA1 (patch-gfx_ycbcr_yuv__row__arm.S) = f3bf72cb9b52b0c64d8ea5d3a25a797409da9d5a
+SHA1 (patch-image_decoders_nsJPEGDecoder.cpp) = fb650d1ae95321a6fc7565ffe3375944d06f95a9
+SHA1 (patch-intl_hyphenation_glue_hnjalloc.h) = abe01bea5872a57f3d00bbbf89f958621f08a655
+SHA1 (patch-ipc_chromium_src_base_atomicops.h) = 24b63a6e51d9ab27f2788ee02f2ffa7e1c36f29a
+SHA1 (patch-ipc_chromium_src_base_message__pump__libevent.cc) = 2c5ce6290760e0435365dac788d283f9bb78acd9
+SHA1 (patch-ipc_chromium_src_base_platform__thread.h) = c81930280bd76a00fbad37aad02fb8451d80b1ee
+SHA1 (patch-ipc_chromium_src_base_platform__thread__posix.cc) = 45409f2152d5ffc376c18c0c9bc696e08e3910ce
+SHA1 (patch-ipc_chromium_src_base_process__util.h) = 4b24c3467866a601d68bb83f44e5fd38fb27188d
+SHA1 (patch-ipc_chromium_src_base_process__util__bsd.cc) = df7216659ec3d09249a4a75312a8dd0347d90e6e
+SHA1 (patch-ipc_chromium_src_base_process__util__posix.cc) = aa6dee9678eeb0eb3d50e74f6e629ee0f4bc9d4b
+SHA1 (patch-ipc_chromium_src_base_sys__info__posix.cc) = 5313c4097c278640573c7e1cb089f6f76b48c1a8
+SHA1 (patch-ipc_chromium_src_base_time__posix.cc) = ba4e0872490f870e7d2f468e1fe87c33cf9a3500
+SHA1 (patch-ipc_chromium_src_build_build__config.h) = 9e4f15226c494f5015dbea3a0df6af851449ae15
+SHA1 (patch-ipc_chromium_src_chrome_common_transport__dib.h) = 33ea11a8c23f2fefcb318342ac9e94d3885cb3b1
+SHA1 (patch-ipc_glue_GeckoChildProcessHost.cpp) = b9c202645a4b6f691a6eb81ef0daf4278d10dcc4
+SHA1 (patch-js__src__vm__SPSProfiler.cpp) = cff6658f08267b3529605a40682a748e99006dbb
+SHA1 (patch-js_src_jit-LIR.cpp) = 84bf136ba96653d8a3aa283c8e4e9f1722a6901f
+SHA1 (patch-js_src_jit_MIR.cpp) = 71676b2510b2cc5bd97c2e872645780fdb680ff3
+SHA1 (patch-js_src_jit_arm_Architecture-arm.cpp) = 25cf7d202fc56968225e6f20fb4b292002ccaa4a
+SHA1 (patch-js_src_jit_none_AtomicOperations-sparc.h) = b44992a869d6d08809a9edc28f1ad6f40632d392
+SHA1 (patch-js_src_jsdate.cpp) = a71f55bc9a5bf68867c294e0c9e07d9ae55251d1
+SHA1 (patch-js_src_jskwgen.cpp) = 34d3b92e13366d4b43ff755ad54f392c116d5c59
+SHA1 (patch-js_xpconnect_src_XPCConvert.cpp) = 915777e9bb5366be41866cdb6ea0ad2b1c006dde
+SHA1 (patch-js_xpconnect_src_xpcprivate.h) = 8a15ff542c9d3fce448d9ec63706f7dfb411d926
+SHA1 (patch-media_libcubeb_src_cubeb.c) = 91eb24595c423b7e086670bb67e73cfd0bfb5559
+SHA1 (patch-media_libcubeb_src_cubeb__alsa.c) = 17ec400709d3e448751ba1283e1b2c5f04bb4dc1
+SHA1 (patch-media_libcubeb_src_cubeb__oss.c) = f3617f38ad98f2eb7ebbd8f5904b361dde4bcc15
+SHA1 (patch-media_libcubeb_src_moz.build) = ffa7cf809f20c9e07e64fc885a06146f41634b03
+SHA1 (patch-media_libsoundtouch_src_cpu__detect__x86.cpp) = db61737afa7773e8cbd82976de3a02c917174696
+SHA1 (patch-media_libstagefright_frameworks_av_include_media_stagefright_foundation_AString.h) = b280f691dbe67b6de592dcd04baf33c6cf480cc8
+SHA1 (patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp) = d79a49a983209e6b673956561f2001c6ef4bcc20
+SHA1 (patch-media_libstagefright_system_core_liblog_fake__log__device.c) = f53c6751dfa63c9ea7a08d39f7be34efb94faef9
+SHA1 (patch-media_libstagefright_system_core_liblog_logprint.c) = 74e92dd838f106e0e050d223d42ad85d1d2e0753
+SHA1 (patch-media_libtheora_lib_arm_armcpu.c) = 4b215277f9c81154377d401166023c1bf78a3718
+SHA1 (patch-media_libtheora_lib_info.c) = 4826eb95ee675b213116e8e9149f81be504a2131
+SHA1 (patch-media_libtheora_moz.build) = cbcb61331fea274b720a4b5c51db1f763fc10d81
+SHA1 (patch-media_libtremor_Makefile.in) = 90f0890f02a3d9791fd02cbcfbf85a9b4bee2cce
+SHA1 (patch-media_libtremor_moz.build) = 87f66296be4db8487eae95b2779a9c02463555cf
+SHA1 (patch-media_libvorbis_Makefile.in) = b1cc7dc1caab94366db6f2a51b72f02ac420bc71
+SHA1 (patch-media_libvorbis_lib_vorbis_info.c) = 6e8d162c83fd7e350bfe8997adc3a9790d159675
+SHA1 (patch-media_libvorbis_moz.build) = cad67e49169ddab075fbfae2e6f0f950c1eccaf0
+SHA1 (patch-media_libyuv_include_libyuv_scale__row.h) = 503b6f2065e9d548a1f01f7158d65874f4886c78
+SHA1 (patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h) = de7055f891387f96f8fd32366c7189d480354e9e
+SHA1 (patch-media_openmax__dl_dl_api_armCOMM__s.h) = 40b3fa8aaec77d3bfec810f0bc4e76eae449d7c7
+SHA1 (patch-memory_build_mozjemalloc__compat.c) = c27c745fd6e0bbb120ef34d8a984937d5f2e1319
+SHA1 (patch-memory_mozalloc_mozalloc__abort.cpp) = 9e94002b01664a42af415639dc94caa127a73ac0
+SHA1 (patch-mfbt_Attributes.h) = 2b5f427b2f2bb8f61207c3ed0918c90b59cf9333
+SHA1 (patch-mfbt_Poison.cpp) = f502581db96b3e5eca25a9aa9035f436e9167503
+SHA1 (patch-modules_libjar_nsZipArchive.cpp) = 133b1658839d9b0f932a601670862c1f4cd70881
+SHA1 (patch-modules_libpref_init_all.js) = 3bc5962fdabb5aecb72ffc7e73bb56392d1ea717
+SHA1 (patch-mozglue_build_arm.cpp) = f41ace63b3f1d2a8ccaffc98c3c64d1e22af5249
+SHA1 (patch-mozglue_build_arm.h) = 5e272f4e19b9681d43a63c45d78b0e44a392c7dc
+SHA1 (patch-python_mozbuild_mozbuild_configure_options.py) = f862ee425ae016df6fe12b55050a8dc075ecce89
+SHA1 (patch-rc) = 9628b038f036f3fc0e37bdf84fa0abf99dbc8d2a
+SHA1 (patch-toolkit_components_protobuf_src_google_protobuf_stubs_atomicops.h) = 5ffb0782bbbff2fd17ad71e98b349b4ec3dc6c8c
+SHA1 (patch-toolkit_components_protobuf_src_google_protobuf_stubs_platform__macros.h) = bd4388323851fcb7b10392d6a27f9bc56633a52e
+SHA1 (patch-toolkit_components_terminator_nsTerminator.cpp) = 5b6d2e5c9f685d32894898d3ef3aec09a1a1e5ce
+SHA1 (patch-toolkit_library_libxul.mk) = 98d79e7ae52d4b54111512a98a03810e2bbe454d
+SHA1 (patch-toolkit_library_moz.build) = be0b3ae0c8048fd61c67b2ae78b2a0813cbefd85
+SHA1 (patch-toolkit_modules_GMPUtils.jsm) = 29ae1476560623bf1871c927d3728761112529e9
+SHA1 (patch-toolkit_moz.configure) = 851a9ed80072de0215863cf81cdbf674bf31271d
+SHA1 (patch-toolkit_mozapps_extensions_test_browser_browser__gmpProvider.js) = eacc4f45f724eb42869a1dba015e127e049fdec4
+SHA1 (patch-toolkit_xre_glxtest.cpp) = cf048491778610454b914400e53072afedd96e7b
+SHA1 (patch-toolkit_xre_nsEmbedFunctions.cpp) = 4db0dfc98ffeb09f524a471e6a727f2c3b045afe
+SHA1 (patch-xpcom_base_nscore.h) = d7c96eda884d7f370442749c43caba50da61bbe4
+SHA1 (patch-xpcom_components_Module.h) = 892f8d6a9cb868e5cdc3c6f6be233055dd1ca529
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_Makefile.in) = 950874fbc255c93a828bddd84ffe8478094214cc
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_moz.build) = 82026e72559334810be2f8a510d22f0553a353c2
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp) = 493d1433ae72bbd0c65ab3f51de43fb864a6f58d
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S) = f310105510bb5fa6c6de122ebdebbfa18423d8d3
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s) = 8e367d4d0baf24714ee80449fc8d6849ff08ca1c
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp) = 8cb72e1bc9a38e3f123539d7bb2aca6793f2b574
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp) = b6dc5d54eeaa908d914116429e61f4b65a6a5f8e
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp) = 71a33723a557a6153405f6baec8404b25f841608
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp) = 0792c2c626d906e71c5183994cb32bf8cdb3e239
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp) = 3a902eb9a23b3b5737f3c8cb5f96a5ad9a98a189
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S) = 79a4686d368132aff804f217baa685b2e06bc396
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s) = 522bc237bc90d85c98b61a467a431fddd91d8c3c
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp) = d246f0695eb43d43bfd5571297945a4b7a88f72c
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp) = 75db49c9cb6bf2993afba82b731d80389d866212
diff --git a/firefox-webrtc/files/desktop.in b/firefox-webrtc/files/desktop.in
new file mode 100644
index 0000000..d72090e
--- /dev/null
+++ b/firefox-webrtc/files/desktop.in
@@ -0,0 +1,191 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=@MOZILLA_NAME@ Web Browser
+Name[am]=
+Name[ar]=
+Name[az]=@MOZILLA_NAME@ Veb Səyyahı
+Name[be]=
+Name[bg]=Интернет браузър @MOZILLA_NAME@
+Name[bn]=
+Name[bs]=@MOZILLA_NAME@ web preglednik
+Name[ca]=Navegador web @MOZILLA_NAME@
+Name[cs]=Prohlížeč WWW @MOZILLA_NAME@
+Name[cy]=Y Porwr Gwe @MOZILLA_NAME@
+Name[da]=@MOZILLA_NAME@ - internetsurfning
+Name[de]=@MOZILLA_NAME@ Webbrowser
+Name[el]=Περιηγητής Διαδικτύου @MOZILLA_NAME@
+Name[en_CA]=@MOZILLA_NAME@ Web Browser
+Name[en_GB]=@MOZILLA_NAME@ Web Browser
+Name[es]=Navegador Web @MOZILLA_NAME@
+Name[et]=@MOZILLA_NAME@ veebibrauser
+Name[eu]=@MOZILLA_NAME@ web arakatzailea
+Name[fi]=@MOZILLA_NAME@, WWW-selain
+Name[fr]=Navigateur Web @MOZILLA_NAME@
+Name[ga]=Brabhsálaí Lín @MOZILLA_NAME@
+Name[gu]=એપીફની વૅબ બ્રાઉઝર
+Name[he]=דפדפן @MOZILLA_NAME@
+Name[hi]=
+Name[hr]=@MOZILLA_NAME@ Web preglednik
+Name[hu]=@MOZILLA_NAME@ webböngésző
+Name[id]=Web Browser @MOZILLA_NAME@
+Name[it]=Browser web @MOZILLA_NAME@
+Name[ja]=@MOZILLA_NAME@ ウェブ・ブラウザ
+Name[ko]=@MOZILLA_NAME@ 웹 브라우저
+Name[li]=@MOZILLA_NAME@ Web Browser
+Name[lt]=@MOZILLA_NAME@ web naršyklė
+Name[mk]=@MOZILLA_NAME@ веб прелистувач
+Name[ml]=എപ്പിഫാനി വെബ്ബ് ബ്രൌസര്
+Name[mn]=@MOZILLA_NAME@ веб хөтөч
+Name[ms]=Pelungsur Web @MOZILLA_NAME@
+Name[nb]=@MOZILLA_NAME@ nettleser
+Name[nl]=@MOZILLA_NAME@ Webbrowser
+Name[nn]=@MOZILLA_NAME@ nettlesar
+Name[no]=@MOZILLA_NAME@ nettleser
+Name[pa]=ਏਪੀਫਾਨੀ ਵੈੱਬ ਬਰਾਊਜ਼ਰ
+Name[pl]=Przeglądarka WWW @MOZILLA_NAME@
+Name[pt]=Navegador Web @MOZILLA_NAME@
+Name[pt_BR]=Navegador Web @MOZILLA_NAME@
+Name[ro]=Navigatorul @MOZILLA_NAME@
+Name[ru]=Веб-браузер @MOZILLA_NAME@
+Name[sk]=
+Name[sl]=Spletni brskalnik @MOZILLA_NAME@
+Name[sq]=@MOZILLA_NAME@ - Shfletuesi Web
+Name[sr]=
+Name[sr@Latn]=Veb čitač Spoznaja
+Name[sv]=Webbläsaren @MOZILLA_NAME@
+Name[ta]=எபிபனி வலை உலாவி
+Name[tk]=@MOZILLA_NAME@ Web Ahtarçisi
+Name[tr]=@MOZILLA_NAME@ Web Tarayıcı
+Name[uk]=Переглядач web @MOZILLA_NAME@
+Name[vi]=Trình Duyệt Web @MOZILLA_NAME@
+Name[wa]=Betchteu waibe epiphany
+Name[zh_CN]=@MOZILLA_NAME@ Web 浏览器
+Name[zh_TW]=@MOZILLA_NAME@ 網頁瀏覽器
+GenericName=Web Browser
+GenericName[ar]=متصفّح الانترنت
+GenericName[az]=Veb Səyyahı
+GenericName[be]=Вандроўнік па павуціньню
+GenericName[bg]=Браузър
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[bs]=Web preglednik
+GenericName[ca]=Navegador web
+GenericName[cs]=Prohlížeč WWW
+GenericName[cy]=Porwr Gwe
+GenericName[da]=Internetsurfning
+GenericName[de]=Webbrowser
+GenericName[el]=Περιηγητής Ιστοσελίδων
+GenericName[en_CA]=Web Browser
+GenericName[en_GB]=Web Browser
+GenericName[es]=Navegador web
+GenericName[et]=Veebilehitseja
+GenericName[eu]=Web arakatzailea
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web @MOZILLA_NAME@
+GenericName[ga]=Brabhsálaí Lín
+GenericName[gu]=વેબ બ્રાઉઝર
+GenericName[he]=דפדפן אינטרנט
+GenericName[hi]=वेब ब्राउज़र
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[id]=Browser Web
+GenericName[it]=Browser web
+GenericName[ja]=GNOME ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[li]=Wèb Browser
+GenericName[lt]=Web naršyklė
+GenericName[mk]=Веб прелистувач
+GenericName[mn]=Веб хөтөч
+GenericName[ms]=Pelungsur Web
+GenericName[nb]=Nettleser
+GenericName[nl]=Web-browser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pa]=ਵੈਬ ਬਰਾਊਜ਼
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=WWW prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sq]=Shfletuesi Web
+GenericName[sr]=Веб читач
+GenericName[sr@Latn]=Veb čitač
+GenericName[sv]=Webbläsare
+GenericName[ta]=வலை உலாவி
+GenericName[th]=เว็บบราวเซอร์
+GenericName[tk]=Web Ahtarçysy
+GenericName[tr]=Web Tarayıcı
+GenericName[uk]=Переглядач web-сторінок
+GenericName[vi]=Trình duyệt Web
+GenericName[wa]=Betchteu waibe
+GenericName[zh_CN]=Web 浏览器
+GenericName[zh_TW]=網頁瀏覽器
+Comment=Browse the web
+Comment[ar]=تصفح الانترنت
+Comment[az]=Vebi gəzin
+Comment[be]=Вандраваць па павуціньню
+Comment[bg]=Сърфиране в интернет
+Comment[bn]=ওয়েব ব্রাউজ করুন
+Comment[bs]=Pregledaj na internetu
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížet WWW
+Comment[cy]=Pori'r we
+Comment[da]=Surf på internettet
+Comment[de]=Im Web surfen
+Comment[el]=Περιήγηση στον παγκόσμιο ιστό
+Comment[en_CA]=Browse the web
+Comment[en_GB]=Browse the web
+Comment[es]=Navegar por la web
+Comment[et]=Sirvi veebi
+Comment[eu]=Arakatu web-a
+Comment[fi]=Selaa WWW:tä
+Comment[fr]=Naviguer sur Internet
+Comment[ga]=Brabhsáil an Líon
+Comment[gu]=વેબમાં શોધો
+Comment[he]=גלוש ברשת
+Comment[hi]=वेब ब्राउज़ करें
+Comment[hr]=Pregledaj Web
+Comment[hu]=A világháló böngészése
+Comment[id]=Jelajah web
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[li]=Blajere op internet
+Comment[lt]=Naršyti internete
+Comment[mk]=Прелистувајте на веб
+Comment[ml]=വലക്കെട്ട് തിരയുക
+Comment[mn]=Веб броузе хийх
+Comment[ms]=Layari web
+Comment[nb]=Surf på nettet
+Comment[nl]=Websurfen
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pa]=ਵੈਬ ਬਰਾਊਜ਼
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegar na web
+Comment[pt_BR]=Navegar na web
+Comment[ro]=Navigare Internet
+Comment[ru]=Веб-браузер
+Comment[sk]=Prehliadať internet
+Comment[sl]=Brskaj po spletu
+Comment[sq]=Eksploro web-in
+Comment[sr]=Прегледај веб
+Comment[sr@Latn]=Pregledaj veb
+Comment[sv]=Surfa på nätet
+Comment[ta]=வலையில் உலாவு
+Comment[th]=ใช้งานเว็บบราวเซอร์ @MOZILLA_NAME@
+Comment[tk]=Webi Ahtar
+Comment[tr]=Web'e Gözat
+Comment[uk]=Програма перегляду web-сторінок
+Comment[vi]=Duyệt web
+Comment[wa]=Naivyî avå les waibes
+Comment[zh_CN]=浏览 Web
+Comment[zh_TW]=瀏覽網頁
+Exec=@MOZILLA@ %u
+Icon=@FIREFOX_ICON@
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=Application;Network;
+MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;
diff --git a/firefox-webrtc/hacks.mk b/firefox-webrtc/hacks.mk
new file mode 100644
index 0000000..700a3d5
--- /dev/null
+++ b/firefox-webrtc/hacks.mk
@@ -0,0 +1,13 @@
+# $NetBSD: hacks.mk,v 1.5 2016/06/16 12:08:21 ryoon Exp $
+
+.if !defined(FIREFOX_HACKS_MK)
+FIREFOX_HACKS_MK= defined
+
+.include "../../mk/bsd.fast.prefs.mk"
+.include "../../mk/compiler.mk"
+
+.if !empty(PKGSRC_COMPILER:Mclang)
+CXXFLAGS+= -Wno-return-type-c-linkage
+.endif
+
+.endif # FIREFOX_HACKS_MK
diff --git a/firefox-webrtc/mozilla-common.mk b/firefox-webrtc/mozilla-common.mk
new file mode 100644
index 0000000..c12c56e
--- /dev/null
+++ b/firefox-webrtc/mozilla-common.mk
@@ -0,0 +1,209 @@
+# $NetBSD: mozilla-common.mk,v 1.83 2016/09/20 20:01:41 ryoon Exp $
+#
+# common Makefile fragment for mozilla packages based on gecko 2.0.
+#
+# used by www/firefox/Makefile
+# used by www/seamonkey/Makefile
+
+.include "../../mk/bsd.prefs.mk"
+
+.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
+BUILD_DEPENDS+= yasm>=1.1:../../devel/yasm
+
+# Enable Google widevine CDM. This requires external libwidevinecdm.so.
+CONFIGURE_ARGS+= --enable-eme=widevine
+.endif
+
+HAS_CONFIGURE= yes
+CONFIGURE_ARGS+= --prefix=${PREFIX}
+USE_TOOLS+= pkg-config perl gmake autoconf213 unzip zip
+USE_LANGUAGES+= c99 c++
+UNLIMIT_RESOURCES+= datasize
+
+test:
+ cd ${WRKSRC}/${OBJDIR}/dist/bin && \
+ ./run-mozilla.sh ${WRKSRC}/mach check-spidermonkey
+
+# tar(1) of OpenBSD 5.5 has no --exclude command line option.
+.if ${OPSYS} == "OpenBSD"
+TOOLS_PLATFORM.tar= ${TOOLS_PATH.bsdtar}
+USE_TOOLS+= bsdtar
+.endif
+# GCC 4.6 is required to support nullptr.
+GCC_REQD+= 4.8
+.if ${MACHINE_ARCH} == "i386"
+# Fix for PR pkg/48152.
+CXXFLAGS+= -march=i586
+# This is required for SSE2 code under i386.
+CXXFLAGS+= -mstackrealign
+.endif
+
+CHECK_PORTABILITY_SKIP+=${MOZILLA_DIR}security/nss/tests/libpkix/libpkix.sh
+CHECK_PORTABILITY_SKIP+=${MOZILLA_DIR}security/nss/tests/multinit/multinit.sh
+CHECK_PORTABILITY_SKIP+=${MOZILLA_DIR}js/src/tests/update-test262.sh
+CHECK_PORTABILITY_SKIP+=${MOZILLA_DIR}intl/icu/source/configure
+CHECK_PORTABILITY_SKIP+=${MOZILLA_DIR}browser/components/loop/run-all-loop-tests.sh
+CHECK_PORTABILITY_SKIP+=${MOZILLA_DIR}browser/extensions/loop/run-all-loop-tests.sh
+
+CONFIGURE_ARGS+= --enable-pie
+CONFIGURE_ARGS+= --disable-tests
+CONFIGURE_ARGS+= --with-pthreads
+CONFIGURE_ARGS+= --enable-default-toolkit=cairo-gtk2
+CONFIGURE_ARGS+= --enable-system-cairo
+CONFIGURE_ARGS+= --enable-system-pixman
+CONFIGURE_ARGS+= --with-system-libvpx
+CONFIGURE_ARGS+= --enable-system-hunspell
+CONFIGURE_ARGS+= --enable-system-ffi
+CONFIGURE_ARGS+= --with-system-icu
+CONFIGURE_ARGS+= --with-system-nss
+CONFIGURE_ARGS+= --with-system-nspr
+CONFIGURE_ARGS+= --with-system-jpeg
+CONFIGURE_ARGS+= --with-system-zlib
+CONFIGURE_ARGS+= --with-system-bz2
+CONFIGURE_ARGS+= --with-system-libevent=${BUILDLINK_PREFIX.libevent}
+CONFIGURE_ARGS+= --disable-crashreporter
+CONFIGURE_ARGS+= --disable-necko-wifi
+CONFIGURE_ARGS+= --enable-chrome-format=flat
+CONFIGURE_ARGS+= --disable-libjpeg-turbo
+
+CONFIGURE_ARGS+= --disable-elf-hack
+CONFIGURE_ARGS+= --disable-gconf
+CONFIGURE_ARGS+= --enable-gio
+CONFIGURE_ARGS+= --enable-extensions=gio
+#CONFIGURE_ARGS+= --enable-readline
+CONFIGURE_ARGS+= --enable-url-classifier
+CONFIGURE_ARGS+= --disable-icf
+CONFIGURE_ARGS+= --disable-updater
+
+SUBST_CLASSES+= fix-paths
+SUBST_STAGE.fix-paths= pre-configure
+SUBST_MESSAGE.fix-paths= Fixing absolute paths.
+SUBST_FILES.fix-paths+= ${MOZILLA_DIR}xpcom/io/nsAppFileLocationProvider.cpp
+SUBST_SED.fix-paths+= -e 's,/usr/lib/mozilla/plugins,${PREFIX}/lib/netscape/plugins,g'
+
+CONFIG_GUESS_OVERRIDE+= ${MOZILLA_DIR}build/autoconf/config.guess
+CONFIG_GUESS_OVERRIDE+= ${MOZILLA_DIR}js/src/build/autoconf/config.guess
+CONFIG_GUESS_OVERRIDE+= ${MOZILLA_DIR}nsprpub/build/autoconf/config.guess
+CONFIG_GUESS_OVERRIDE+= ${MOZILLA_DIR}/js/ctypes/libffi/config.guess
+CONFIG_SUB_OVERRIDE+= ${MOZILLA_DIR}build/autoconf/config.sub
+CONFIG_SUB_OVERRIDE+= ${MOZILLA_DIR}js/src/build/autoconf/config.sub
+CONFIG_SUB_OVERRIDE+= ${MOZILLA_DIR}nsprpub/build/autoconf/config.sub
+CONFIG_SUB_OVERRIDE+= ${MOZILLA_DIR}/js/ctypes/libffi/config.sub
+
+PYTHON_VERSIONS_ACCEPTED= 27
+PYTHON_FOR_BUILD_ONLY= yes
+PYTHON_VERSIONS_INCOMPATIBLE= 34 35 # py-sqlite2
+.include "../../lang/python/application.mk"
+CONFIGURE_ENV+= PYTHON=${PYTHONBIN:Q}
+
+SUBST_CLASSES+= python
+SUBST_STAGE.python= pre-configure
+SUBST_MESSAGE.python= Fixing path to python.
+SUBST_FILES.python+= media/webrtc/trunk/build/common.gypi
+SUBST_SED.python+= -e 's,<!(python,<!(${PYTHONBIN},'
+
+# Build outside ${WRKSRC}
+# Try to avoid conflict with config/makefiles/xpidl/Makefile.in
+OBJDIR= ../build
+CONFIGURE_DIRS= ${OBJDIR}
+CONFIGURE_SCRIPT= ${WRKSRC}/configure
+
+PLIST_VARS+= sps vorbis tremor glskia throwwrapper mozglue
+
+.include "../../mk/endian.mk"
+.if ${MACHINE_ENDIAN} == "little"
+PLIST.glskia= yes
+.endif
+
+.if ${MACHINE_ARCH} != "sparc64"
+# For some reasons the configure test for GCC bug 26905 still triggers on
+# sparc64, which makes mozilla skip the installation of a few wrapper headers.
+# Other archs end up with one additional file in the SDK headers
+PLIST.throwwrapper= yes
+.endif
+
+.if !empty(MACHINE_PLATFORM:S/i386/x86/:MLinux-*-x86*)
+PLIST.sps= yes
+.endif
+
+.if !empty(MACHINE_PLATFORM:MLinux-*-arm*)
+PLIST.tremor= yes
+.else
+PLIST.vorbis= yes
+.endif
+
+# See ${WRKSRC}/mozglue/build/moz.build: libmozglue is built and
+# installed as a shared library on these platforms.
+.if ${OPSYS} == "Cygwin" || ${OPSYS} == "Darwin" # or Android
+PLIST.mozglue= yes
+.endif
+
+# See ${WRKSRC}/security/sandbox/mac/Sandbox.mm: On Darwin, sandboxing
+# support is only available when the toolkit is cairo-cocoa.
+CONFIGURE_ARGS.Darwin+= --disable-sandbox
+
+# See ${WRKSRC}/configure.in: It tries to use MacOS X 10.6 SDK by
+# default, which is not always possible.
+.if !empty(MACHINE_PLATFORM:MDarwin-8.*-*)
+CONFIGURE_ARGS+= --enable-macos-target=10.4
+.elif !empty(MACHINE_PLATFORM:MDarwin-9.*-*)
+CONFIGURE_ARGS+= --enable-macos-target=10.5
+.endif
+
+#
+# pysqlite2 is used by xulrunner's Python virtualenv. If pysqlite2 isn't
+# installed at build time it will attempt to download it instead, so the
+# problem is stealthy in a networked environment, and obvious in an
+# offline environment.
+#
+BUILD_DEPENDS+= ${PYPKGPREFIX}-sqlite2-[0-9]*:../../databases/py-sqlite2
+
+# Makefiles sometimes call "rm -f" without more arguments. Kludge around ...
+.PHONY: create-rm-wrapper
+pre-configure: create-rm-wrapper
+create-rm-wrapper:
+ printf '#!/bin/sh\n[ "$$*" = "-f" ] && exit 0\nexec /bin/rm $$@\n' > \
+ ${WRAPPER_DIR}/bin/rm
+ chmod +x ${WRAPPER_DIR}/bin/rm
+
+# The configure test for __thread succeeds, but later we end up with:
+# dist/bin/libxul.so: undefined reference to `__tls_get_addr'
+CONFIGURE_ENV.NetBSD+= ac_cv_thread_keyword=no
+
+.if ${OPSYS} == "SunOS"
+# native libbz2.so hides BZ2_crc32Table
+PREFER.bzip2?= pkgsrc
+.endif
+
+.if ${OPSYS} == "OpenBSD"
+PLIST_SUBST+= DLL_SUFFIX=".so.1.0"
+.elif ${OPSYS} == "Darwin"
+PLIST_SUBST+= DLL_SUFFIX=".dylib"
+.else
+PLIST_SUBST+= DLL_SUFFIX=".so"
+.endif
+
+.include "../../archivers/bzip2/buildlink3.mk"
+BUILDLINK_API_DEPENDS.libevent+= libevent>=1.1
+.include "../../devel/libevent/buildlink3.mk"
+.include "../../devel/libffi/buildlink3.mk"
+BUILDLINK_API_DEPENDS.nspr+= nspr>=4.10.10
+.include "../../devel/nspr/buildlink3.mk"
+.include "../../textproc/icu/buildlink3.mk"
+BUILDLINK_API_DEPENDS.nss+= nss>=3.23nb1
+.include "../../devel/nss/buildlink3.mk"
+.include "../../devel/zlib/buildlink3.mk"
+.include "../../mk/jpeg.buildlink3.mk"
+.include "../../graphics/MesaLib/buildlink3.mk"
+BUILDLINK_API_DEPENDS.cairo+= cairo>=1.10.2nb4
+.include "../../graphics/cairo/buildlink3.mk"
+BUILDLINK_API_DEPENDS.libvpx+= libvpx>=1.3.0
+.include "../../multimedia/libvpx/buildlink3.mk"
+.include "../../net/libIDL/buildlink3.mk"
+.include "../../textproc/hunspell/buildlink3.mk"
+BUILDLINK_API_DEPENDS.gtk2+= gtk2+>=2.18.3nb1
+.include "../../x11/gtk2/buildlink3.mk"
+.include "../../multimedia/ffmpeg3/buildlink3.mk"
+.include "../../x11/libXt/buildlink3.mk"
+BUILDLINK_API_DEPENDS.pixman+= pixman>=0.25.2
+.include "../../x11/pixman/buildlink3.mk"
diff --git a/firefox-webrtc/options.mk b/firefox-webrtc/options.mk
new file mode 100644
index 0000000..2722838
--- /dev/null
+++ b/firefox-webrtc/options.mk
@@ -0,0 +1,103 @@
+# $NetBSD: options.mk,v 1.32 2016/08/20 11:17:32 ryoon Exp $
+
+PKG_OPTIONS_VAR= PKG_OPTIONS.firefox
+PKG_SUPPORTED_OPTIONS= official-mozilla-branding
+PKG_SUPPORTED_OPTIONS+= debug debug-info mozilla-jemalloc webrtc
+PKG_SUPPORTED_OPTIONS+= alsa oss pulseaudio dbus
+PLIST_VARS+= gnome jemalloc debug
+
+.if ${OPSYS} == "Linux"
+PKG_SUGGESTED_OPTIONS+= alsa mozilla-jemalloc dbus
+.else
+PKG_SUGGESTED_OPTIONS+= pulseaudio dbus
+.endif
+
+# On NetBSD/amd64 6.99.21 libxul.so is invalid when --enable-webrtc is set.
+PKG_SUGGESTED_OPTIONS.Linux+= webrtc
+
+.include "../../mk/bsd.options.mk"
+
+.if !empty(PKG_OPTIONS:Malsa)
+CONFIGURE_ARGS+= --enable-alsa
+.include "../../audio/alsa-lib/buildlink3.mk"
+.else
+CONFIGURE_ARGS+= --disable-alsa
+.endif
+
+.if !empty(PKG_OPTIONS:Moss)
+CONFIGURE_ARGS+= --with-oss
+.include "../../mk/oss.buildlink3.mk"
+.else
+CONFIGURE_ARGS+= --without-oss
+.endif
+
+.if !empty(PKG_OPTIONS:Mmozilla-jemalloc)
+PLIST.jemalloc= yes
+CONFIGURE_ARGS+= --enable-jemalloc
+CONFIGURE_ARGS+= --enable-replace-malloc
+.else
+CONFIGURE_ARGS+= --disable-jemalloc
+.endif
+
+.include "../../mk/compiler.mk"
+.if !empty(PKGSRC_COMPILER:Mgcc)
+.if ${CC_VERSION:S/gcc-//:S/.//g} >= 480
+# Modern gcc does not run any "tracking" passes when compiling with -O0,
+# which makes the generated debug info mostly useless. So explicitly
+# request them.
+O0TRACKING=-fvar-tracking-assignments -fvar-tracking
+.endif
+.endif
+
+.if !empty(PKG_OPTIONS:Mdebug)
+CONFIGURE_ARGS+= --enable-debug="-g -O0 ${O0TRACKING}"
+CONFIGURE_ARGS+= --enable-debug-symbols
+CONFIGURE_ARGS+= --disable-optimize
+CONFIGURE_ARGS+= --enable-debug-js-modules
+CONFIGURE_ARGS+= --disable-install-strip
+PLIST.debug= yes
+.else
+.if !empty(PKG_OPTIONS:Mdebug-info)
+CONFIGURE_ARGS+= --enable-debug-symbols
+CONFIGURE_ARGS+= --enable-optimize=-O0
+.else
+CONFIGURE_ARGS+= --disable-debug-symbols
+.endif
+CONFIGURE_ARGS+= --disable-debug
+CONFIGURE_ARGS+= --enable-optimize=-O2
+CONFIGURE_ARGS+= --enable-install-strip
+.endif
+
+.if !empty(PKG_OPTIONS:Mpulseaudio)
+.include "../../audio/pulseaudio/buildlink3.mk"
+CONFIGURE_ARGS+= --enable-pulseaudio
+.else
+CONFIGURE_ARGS+= --disable-pulseaudio
+.endif
+
+.if !empty(PKG_OPTIONS:Mdbus)
+.include "../../sysutils/dbus-glib/buildlink3.mk"
+CONFIGURE_ARGS+= --enable-dbus
+.else
+CONFIGURE_ARGS+= --disable-dbus
+.endif
+
+PLIST_VARS+= branding nobranding
+.if !empty(PKG_OPTIONS:Mofficial-mozilla-branding)
+CONFIGURE_ARGS+= --enable-official-branding
+LICENSE= mozilla-trademark-license
+RESTRICTED= Trademark holder prohibits distribution of modified versions.
+NO_BIN_ON_CDROM= ${RESTRICTED}
+NO_BIN_ON_FTP= ${RESTRICTED}
+PLIST.branding= yes
+.else
+PLIST.nobranding= yes
+.endif
+
+PLIST_VARS+= webrtc
+.if !empty(PKG_OPTIONS:Mwebrtc)
+.include "../../graphics/libv4l/buildlink3.mk"
+CONFIGURE_ARGS+= --enable-webrtc
+.else
+CONFIGURE_ARGS+= --disable-webrtc
+.endif
diff --git a/firefox-webrtc/patches/patch-aa b/firefox-webrtc/patches/patch-aa
new file mode 100644
index 0000000..9d6e5f8
--- /dev/null
+++ b/firefox-webrtc/patches/patch-aa
@@ -0,0 +1,280 @@
+$NetBSD: patch-aa,v 1.47 2016/08/06 08:46:59 ryoon Exp $
+
+* MOZ_ENABLE_PROFILER_SPS is not for users, Disable it
+* Disable libjpeg-turbo check
+* Add system libraries option
+* Add OSS audio support
+
+--- old-configure.in.orig 2016-07-25 20:22:06.000000000 +0000
++++ old-configure.in
+@@ -2489,11 +2489,7 @@ if test "$MOZ_SYSTEM_JPEG" = 1; then
+ #include <jpeglib.h> ],
+ [ #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_SYSTEM_JPEG=1,
+ AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
+ fi
+@@ -3638,6 +3634,9 @@ if test -n "$MOZ_WEBRTC"; then
+ MOZ_RAW=1
+ MOZ_VPX_ERROR_CONCEALMENT=1
+
++ dnl with libv4l2 we can support more cameras
++ PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2)
++
+ dnl enable once Signaling lands
+ MOZ_WEBRTC_SIGNALING=1
+ AC_DEFINE(MOZ_WEBRTC_SIGNALING)
+@@ -3780,6 +3779,155 @@ if test "${ac_cv_c_attribute_aligned}" !
+ fi
+
+ dnl ========================================================
++dnl Check for libogg
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-ogg,
++[ --with-system-ogg Use system libogg (located with pkgconfig)],
++MOZ_SYSTEM_OGG=1,
++MOZ_SYSTEM_OGG=)
++
++if test -n "$MOZ_SYSTEM_OGG"; then
++ PKG_CHECK_MODULES(MOZ_OGG, ogg >= 1.2.1)
++
++ _SAVE_LIBS=$LIBS
++ LIBS="$LIBS $MOZ_OGG_LIBS"
++ AC_CHECK_FUNC(ogg_set_mem_functions, [],
++ [AC_DEFINE(MOZ_OGG_NO_MEM_REPORTING)])
++ LIBS=$_SAVE_LIBS
++fi
++
++AC_SUBST(MOZ_SYSTEM_OGG)
++
++dnl ========================================================
++dnl Check for libvorbis
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-vorbis,
++[ --with-system-vorbis Use system libvorbis (located with pkgconfig)],
++MOZ_SYSTEM_VORBIS=1,
++MOZ_SYSTEM_VORBIS=)
++
++if test -n "$MOZ_SYSTEM_VORBIS"; then
++ PKG_CHECK_MODULES(MOZ_VORBIS, vorbis vorbisenc >= 1.3.5)
++fi
++
++AC_SUBST(MOZ_SYSTEM_VORBIS)
++
++dnl ========================================================
++dnl Check for integer-only libvorbis aka tremor
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-tremor,
++[ --with-system-tremor Use system libtremor (located with pkgconfig)],
++MOZ_SYSTEM_TREMOR=1,
++MOZ_SYSTEM_TREMOR=)
++
++if test -n "$MOZ_SYSTEM_TREMOR"; then
++ PKG_CHECK_MODULES(MOZ_TREMOR, vorbisidec >= 1.2.1)
++fi
++
++AC_SUBST(MOZ_SYSTEM_TREMOR)
++
++dnl ========================================================
++dnl Check for libcelt
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-celt,
++[ --with-system-celt Use system libcelt (located with pkgconfig)],
++MOZ_SYSTEM_CELT=1,
++MOZ_SYSTEM_CELT=)
++
++if test -n "$MOZ_SYSTEM_CELT"; then
++ PKG_CHECK_MODULES(MOZ_CELT, celt)
++else
++ MOZ_CELT_CFLAGS='-I$(topsrcdir)/media/libopus'
++fi
++
++AC_SUBST(MOZ_SYSTEM_CELT)
++
++dnl ========================================================
++dnl Check for libopus
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-opus,
++[ --with-system-opus Use system libopus (located with pkgconfig)],
++MOZ_SYSTEM_OPUS=1,
++MOZ_SYSTEM_OPUS=)
++
++if test -n "$MOZ_SYSTEM_OPUS"; then
++ PKG_CHECK_MODULES(MOZ_OPUS, opus >= 1.1)
++else
++ MOZ_OPUS_CFLAGS='-I$(topsrcdir)/media/libopus/include'
++fi
++
++AC_SUBST(MOZ_SYSTEM_OPUS)
++
++dnl ========================================================
++dnl Check for libtheora
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-theora,
++[ --with-system-theora Use system libtheora (located with pkgconfig)],
++MOZ_SYSTEM_THEORA=1,
++MOZ_SYSTEM_THEORA=)
++
++if test -n "$MOZ_SYSTEM_THEORA"; then
++ PKG_CHECK_MODULES(MOZ_THEORA, theora >= 1.2)
++fi
++
++AC_SUBST(MOZ_SYSTEM_THEORA)
++
++dnl ========================================================
++dnl Check for libsoundtouch
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-soundtouch,
++[ --with-system-soundtouch Use system libsoundtouch (located with pkgconfig)],
++MOZ_SYSTEM_SOUNDTOUCH=1,
++MOZ_SYSTEM_SOUNDTOUCH=)
++
++if test -n "$MOZ_SYSTEM_SOUNDTOUCH"; then
++ PKG_CHECK_MODULES(MOZ_SOUNDTOUCH, soundtouch >= 1.8.0)
++
++ AC_LANG_SAVE
++ AC_LANG_CPLUSPLUS
++ _SAVE_CXXFLAGS=$CXXFLAGS
++ CXXFLAGS="$CXXFLAGS $MOZ_SOUNDTOUCH_CFLAGS"
++ AC_CACHE_CHECK(for soundtouch sample type,
++ ac_cv_soundtouch_sample_type,
++ [AC_TRY_COMPILE([#include <SoundTouch.h>
++ #ifndef SOUNDTOUCH_INTEGER_SAMPLES
++ #error soundtouch expects float samples
++ #endif],
++ [],
++ [ac_cv_soundtouch_sample_type=short],
++ [ac_cv_soundtouch_sample_type=float])])
++ CXXFLAGS=$_SAVE_CXXFLAGS
++ AC_LANG_RESTORE
++
++ if test \( -n "$MOZ_SAMPLE_TYPE_S16" -a "$ac_cv_soundtouch_sample_type" != short \) \
++ -o \( -n "$MOZ_SAMPLE_TYPE_FLOAT32" -a "$ac_cv_soundtouch_sample_type" != float \) ; then
++ AC_MSG_ERROR([SoundTouch library is built with incompatible sample type. Either rebuild the library with/without --enable-integer-samples, chase default Mozilla sample type or remove --with-system-soundtouch.])
++ fi
++fi
++
++AC_SUBST(MOZ_SYSTEM_SOUNDTOUCH)
++
++dnl ========================================================
++dnl = Disable VP8 decoder support
++dnl ========================================================
++MOZ_ARG_DISABLE_BOOL(webm,
++[ --disable-webm Disable support for WebM media (VP8 video and Vorbis audio)],
++ MOZ_WEBM=,
++ MOZ_WEBM=1)
++
++if test -n "$MOZ_WEBM"; then
++ AC_DEFINE(MOZ_WEBM)
++ MOZ_VPX=1
++fi;
++
++dnl ========================================================
+ dnl = Apple platform decoder support
+ dnl ========================================================
+ if test "$COMPILE_ENVIRONMENT"; then
+@@ -4027,6 +4175,67 @@ AC_DEFINE(MOZ_WEBM_ENCODER)
+ AC_SUBST(MOZ_WEBM_ENCODER)
+
+ dnl ==================================
++dnl = Check OSS availability
++dnl ==================================
++
++dnl If using Linux, Solaris or BSDs, ensure that OSS is available
++case "$OS_TARGET" in
++Linux|SunOS|DragonFly|FreeBSD|GNU/kFreeBSD)
++ MOZ_OSS=1
++ ;;
++esac
++
++MOZ_ARG_WITH_STRING(oss,
++[ --with-oss[=PFX] Enable OpenSoundSystem support [installed at prefix PFX]],
++ OSSPREFIX=$withval)
++
++if test -n "$OSSPREFIX"; then
++ if test "$OSSPREFIX" != "no"; then
++ MOZ_OSS=1
++ else
++ MOZ_OSS=
++ fi
++fi
++
++_SAVE_CFLAGS=$CFLAGS
++_SAVE_LIBS=$LIBS
++if test -n "$MOZ_OSS"; then
++ dnl Prefer 4Front implementation
++ AC_MSG_CHECKING([MOZ_OSS_CFLAGS])
++ if test "$OSSPREFIX" != "yes"; then
++ oss_conf=${OSSPREFIX}/etc/oss.conf
++ if test -f "$oss_conf"; then
++ . "$oss_conf"
++ else
++ OSSLIBDIR=$OSSPREFIX/lib/oss
++ fi
++ if test -d "$OSSLIBDIR"; then
++ MOZ_OSS_CFLAGS="$MOZ_OSS_CFLAGS -I$OSSLIBDIR/include"
++ fi
++ fi
++ AC_MSG_RESULT([$MOZ_OSS_CFLAGS])
++
++ CFLAGS="$CFLAGS $MOZ_OSS_CFLAGS"
++ MOZ_CHECK_HEADERS(sys/soundcard.h soundcard.h)
++
++ if test "$ac_cv_header_sys_soundcard_h" != "yes" -a \
++ "$ac_cv_header_soundcard_h" != "yes"; then
++ AC_MSG_ERROR([Need OSS for Ogg, Wave or WebM decoding on $OS_TARGET. Disable with --disable-ogg --disable-wave --disable-webm.])
++ fi
++
++ dnl Assume NetBSD implementation over SunAudio
++ AC_CHECK_LIB(ossaudio, _oss_ioctl,
++ [AC_DEFINE_UNQUOTED(CUBEB_OSS_DEFAULT_OUTPUT, "/dev/sound")
++ MOZ_OSS_LIBS="$MOZ_OSS_LIBS -lossaudio"])
++fi
++CFLAGS=$_SAVE_CFLAGS
++LIBS=$_SAVE_LIBS
++
++AC_SUBST(MOZ_OSS)
++AC_SUBST_LIST(MOZ_OSS_CFLAGS)
++AC_SUBST_LIST(MOZ_OSS_LIBS)
++
++dnl ==================================
+ dnl = Check alsa availability on Linux
+ dnl ==================================
+
+@@ -4040,12 +4249,23 @@ MOZ_ARG_ENABLE_BOOL(alsa,
+ MOZ_ALSA=1,
+ MOZ_ALSA=)
+
++MOZ_ARG_DISABLE_BOOL(alsa-dlopen,
++[ --disable-alsa-dlopen Disable runtime linking of libasound.so],
++ DISABLE_LIBASOUND_DLOPEN=1,
++ DISABLE_LIBASOUND_DLOPEN=)
++
+ if test -n "$MOZ_ALSA"; then
+ PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
+ [echo "$MOZ_ALSA_PKG_ERRORS"
+ AC_MSG_ERROR([Need alsa for audio output on Linux. (On Ubuntu, you might try installing the package libasound2-dev.)])])
+ fi
+
++if test -n "$DISABLE_LIBASOUND_DLOPEN"; then
++ AC_DEFINE(DISABLE_LIBASOUND_DLOPEN)
++else
++ MOZ_ALSA_LIBS=
++fi
++
+ AC_SUBST(MOZ_ALSA)
+
+ dnl ========================================================
diff --git a/firefox-webrtc/patches/patch-ao b/firefox-webrtc/patches/patch-ao
new file mode 100644
index 0000000..5be1ac2
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ao
@@ -0,0 +1,15 @@
+$NetBSD: patch-ao,v 1.15 2016/06/16 12:08:21 ryoon Exp $
+
+* For devel/xulrunner*
+
+--- toolkit/mozapps/installer/packager.mk.orig 2016-01-23 23:23:49.000000000 +0000
++++ toolkit/mozapps/installer/packager.mk
+@@ -132,7 +132,7 @@ endif
+ $(NSINSTALL) -D $(DESTDIR)$(bindir)
+ $(RM) -f $(DESTDIR)$(bindir)/$(MOZ_APP_NAME)
+ ln -s $(installdir)/$(MOZ_APP_NAME) $(DESTDIR)$(bindir)
+-ifdef INSTALL_SDK # Here comes the hard part
++ifeq ($(MOZ_APP_NAME),xulrunner)
+ $(NSINSTALL) -D $(DESTDIR)$(includedir)
+ (cd $(DIST)/include && $(TAR) $(TAR_CREATE_FLAGS) - .) | \
+ (cd $(DESTDIR)$(includedir) && tar -xf -)
diff --git a/firefox-webrtc/patches/patch-as b/firefox-webrtc/patches/patch-as
new file mode 100644
index 0000000..209608f
--- /dev/null
+++ b/firefox-webrtc/patches/patch-as
@@ -0,0 +1,34 @@
+$NetBSD: patch-as,v 1.20 2016/08/06 08:46:59 ryoon Exp $
+
+* Treat DragonFly like FreeBSD.
+* Add system ICU support
+
+--- js/src/old-configure.in.orig 2016-07-25 20:22:08.000000000 +0000
++++ js/src/old-configure.in
+@@ -1263,8 +1263,7 @@ AC_LANG_CPLUSPLUS
+
+ MOZ_CXX11
+
+-dnl Check for .hidden assembler directive and visibility attribute.
+-dnl Borrowed from glibc configure.in
++dnl Setup default hidden visibility and wrapped system headers.
+ dnl ===============================================================
+ if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then
+ AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
+@@ -2613,6 +2612,16 @@ MOZ_CONFIG_ICU()
+ dnl ========================================================
+ dnl JavaScript shell
+ dnl ========================================================
++ICU_LIB_NAMES=
++MOZ_SYSTEM_ICU=
++MOZ_ARG_WITH_BOOL(system-icu,
++[ --with-system-icu
++ Use system icu (located with pkgconfig)],
++ MOZ_SYSTEM_ICU=1)
++
++if test -n "$MOZ_SYSTEM_ICU"; then
++ PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1)
++fi
+
+ MOZ_CHECK_ALLOCATOR
+
diff --git a/firefox-webrtc/patches/patch-bf b/firefox-webrtc/patches/patch-bf
new file mode 100644
index 0000000..2fd2f67
--- /dev/null
+++ b/firefox-webrtc/patches/patch-bf
@@ -0,0 +1,15 @@
+$NetBSD: patch-bf,v 1.5 2016/06/16 12:08:21 ryoon Exp $
+
+* For NetBSD, use pthread_attr_get_np
+
+--- js/src/jsnativestack.cpp.orig 2013-09-10 03:43:36.000000000 +0000
++++ js/src/jsnativestack.cpp
+@@ -114,7 +114,7 @@ js::GetNativeStackBaseImpl()
+ pthread_attr_init(&sattr);
+ # if defined(__OpenBSD__)
+ stack_t ss;
+-# elif defined(PTHREAD_NP_H) || defined(_PTHREAD_NP_H_) || defined(NETBSD)
++# elif defined(PTHREAD_NP_H) || defined(_PTHREAD_NP_H_) || defined(__DragonFly__) || defined(NETBSD) || defined(__NetBSD__) /* XXX tnn not sure why NETBSD isn't defined, it looks like it should be ... */
+ /* e.g. on FreeBSD 4.8 or newer, neundorf%kde.org@localhost */
+ pthread_attr_get_np(thread, &sattr);
+ # else
diff --git a/firefox-webrtc/patches/patch-browser_installer_package-manifest.in b/firefox-webrtc/patches/patch-browser_installer_package-manifest.in
new file mode 100644
index 0000000..9252bb3
--- /dev/null
+++ b/firefox-webrtc/patches/patch-browser_installer_package-manifest.in
@@ -0,0 +1,24 @@
+$NetBSD: patch-browser_installer_package-manifest.in,v 1.7 2015/11/03 15:52:57 ryoon Exp $
+
+Limit SPARC bits to just SPARC (untested, but fixes x86).
+
+--- browser/installer/package-manifest.in.orig 2015-10-22 22:30:28.000000000 +0000
++++ browser/installer/package-manifest.in
+@@ -620,7 +620,7 @@
+ @RESPATH@/components/MozKeyboard.js
+ @RESPATH@/components/InputMethod.manifest
+
+-#ifdef MOZ_DEBUG
++#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
+ @RESPATH@/components/TestInterfaceJS.js
+ @RESPATH@/components/TestInterfaceJS.manifest
+ @RESPATH@/components/TestInterfaceJSMaplike.js
+@@ -822,7 +822,7 @@
+ #endif
+
+ ; for Solaris SPARC
+-#ifdef SOLARIS
++#if defined(SOLARIS) && defined(SPARC)
+ bin/libfreebl_32fpu_3.so
+ bin/libfreebl_32int_3.so
+ bin/libfreebl_32int64_3.so
diff --git a/firefox-webrtc/patches/patch-build_autoconf_compiler-opts.m4 b/firefox-webrtc/patches/patch-build_autoconf_compiler-opts.m4
new file mode 100644
index 0000000..05683e6
--- /dev/null
+++ b/firefox-webrtc/patches/patch-build_autoconf_compiler-opts.m4
@@ -0,0 +1,22 @@
+$NetBSD: patch-build_autoconf_compiler-opts.m4,v 1.1 2014/05/28 04:34:52 pho Exp $
+
+It's true Clang is required if we use the cocoa toolkit, but we don't
+do that anyway. GCC is perfectly working as long as we use cairo-gtk2.
+
+--- build/autoconf/compiler-opts.m4.orig 2014-05-06 22:55:14.000000000 +0000
++++ build/autoconf/compiler-opts.m4
+@@ -53,14 +53,6 @@ case "$target" in
+ if test -z "$CXX"; then
+ MOZ_PATH_PROGS(CXX, clang++)
+ fi
+- IS_GCC=$($CC -v 2>&1 | grep gcc)
+- if test -n "$IS_GCC"
+- then
+- echo gcc is known to be broken on OS X, please use clang.
+- echo see http://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites
+- echo for more information.
+- exit 1
+- fi
+ ;;
+ esac
+ fi
diff --git a/firefox-webrtc/patches/patch-build_gyp.mozbuild b/firefox-webrtc/patches/patch-build_gyp.mozbuild
new file mode 100644
index 0000000..42ea0d7
--- /dev/null
+++ b/firefox-webrtc/patches/patch-build_gyp.mozbuild
@@ -0,0 +1,24 @@
+$NetBSD: patch-build_gyp.mozbuild,v 1.4 2016/09/20 20:01:41 ryoon Exp $
+
+Hunk #1:
+ Try to add Video4Linux2 support
+
+Hunk #2:
+ On Darwin, don't assume iOS just because the toolkit is not
+ cocoa. Ideally there should be an AC_SUBST just like 'ARM_ARCH' but
+ nothing exists currently.
+
+Hunk #3:
+ MacOS X SDK version should be able to configure with
+ ./configure --enable-macos-target=VER
+
+--- build/gyp.mozbuild.orig 2016-06-06 20:14:57.000000000 +0000
++++ build/gyp.mozbuild
+@@ -14,6 +14,7 @@ gyp_vars = {
+ 'have_ethtool_cmd_speed_hi': 1 if CONFIG['MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI'] else 0,
+ 'include_alsa_audio': 1 if CONFIG['MOZ_ALSA'] else 0,
+ 'include_pulse_audio': 1 if CONFIG['MOZ_PULSEAUDIO'] else 0,
++ 'use_libv4l2': 1 if CONFIG['MOZ_LIBV4L2_LIBS'] else 0,
+ # basic stuff for everything
+ 'include_internal_video_render': 0,
+ 'clang_use_chrome_plugins': 0,
diff --git a/firefox-webrtc/patches/patch-build_moz.configure_old.configure b/firefox-webrtc/patches/patch-build_moz.configure_old.configure
new file mode 100644
index 0000000..c17d577
--- /dev/null
+++ b/firefox-webrtc/patches/patch-build_moz.configure_old.configure
@@ -0,0 +1,49 @@
+$NetBSD: patch-build_moz.configure_old.configure,v 1.2 2016/09/20 20:01:41 ryoon Exp $
+
+--- build/moz.configure/old.configure.orig 2016-08-18 00:33:14.000000000 +0000
++++ build/moz.configure/old.configure
+@@ -159,6 +159,7 @@ def old_configure_options(*options):
+ '--enable-accessibility',
+ '--enable-address-sanitizer',
+ '--enable-alsa',
++ '--enable-alsa-dlopen',
+ '--enable-android-omx',
+ '--enable-approximate-location',
+ '--enable-b2g-bt',
+@@ -262,6 +263,7 @@ def old_configure_options(*options):
+ '--enable-verify-mar',
+ '--enable-warnings-as-errors',
+ '--enable-webapp-runtime',
++ '--enable-webm',
+ '--enable-webrtc',
+ '--enable-websms-backend',
+ '--enable-webspeech',
+@@ -310,6 +312,7 @@ def old_configure_options(*options):
+ '--with-nspr-prefix',
+ '--with-nss-exec-prefix',
+ '--with-nss-prefix',
++ '--with-oss',
+ '--with-pthreads',
+ '--with-qemu-exe',
+ '--with-qtdir',
+@@ -317,13 +320,20 @@ def old_configure_options(*options):
+ '--with-sixgill',
+ '--with-soft-float',
+ '--with-system-bz2',
++ '--with-system-celt',
+ '--with-system-icu',
+ '--with-system-jpeg',
+ '--with-system-libevent',
+ '--with-system-libvpx',
+ '--with-system-nspr',
+ '--with-system-nss',
++ '--with-system-ogg',
++ '--with-system-opus',
+ '--with-system-png',
++ '--with-system-soundtouch',
++ '--with-system-theora',
++ '--with-system-tremor',
++ '--with-system-vorbis',
+ '--with-system-zlib',
+ '--with-thumb',
+ '--with-thumb-interwork',
diff --git a/firefox-webrtc/patches/patch-config_Makefile.in b/firefox-webrtc/patches/patch-config_Makefile.in
new file mode 100644
index 0000000..5d1554c
--- /dev/null
+++ b/firefox-webrtc/patches/patch-config_Makefile.in
@@ -0,0 +1,21 @@
+$NetBSD: patch-config_Makefile.in,v 1.7 2016/08/06 08:46:59 ryoon Exp $
+
+* Support system libraries
+
+--- config/Makefile.in.orig 2016-07-25 20:22:04.000000000 +0000
++++ config/Makefile.in
+@@ -49,6 +49,14 @@ export:: $(export-preqs)
+ -DMOZ_SYSTEM_LIBEVENT=$(MOZ_SYSTEM_LIBEVENT) \
+ -DMOZ_SYSTEM_LIBVPX=$(MOZ_SYSTEM_LIBVPX) \
+ -DMOZ_SYSTEM_ICU=$(MOZ_SYSTEM_ICU) \
++ -DMOZ_SYSTEM_OGG=$(MOZ_SYSTEM_OGG) \
++ -DMOZ_SYSTEM_THEORA=$(MOZ_SYSTEM_THEORA) \
++ -DMOZ_SYSTEM_VORBIS=$(MOZ_SYSTEM_VORBIS) \
++ -DMOZ_SYSTEM_TREMOR=$(MOZ_SYSTEM_TREMOR) \
++ -DMOZ_SYSTEM_CELT=$(MOZ_SYSTEM_CELT) \
++ -DMOZ_SYSTEM_OPUS=$(MOZ_SYSTEM_OPUS) \
++ -DMOZ_SYSTEM_SPEEX=$(MOZ_SYSTEM_SPEEX) \
++ -DMOZ_SYSTEM_SOUNDTOUCH=$(MOZ_SYSTEM_SOUNDTOUCH) \
+ $(srcdir)/system-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers
+ $(INSTALL) system_wrappers $(DIST)
+
diff --git a/firefox-webrtc/patches/patch-config_baseconfig.mk b/firefox-webrtc/patches/patch-config_baseconfig.mk
new file mode 100644
index 0000000..f259223
--- /dev/null
+++ b/firefox-webrtc/patches/patch-config_baseconfig.mk
@@ -0,0 +1,21 @@
+$NetBSD: patch-config_baseconfig.mk,v 1.8 2016/06/16 12:08:21 ryoon Exp $
+
+* Set pkgsrc directory structure
+
+--- config/baseconfig.mk.orig 2016-02-25 23:01:53.000000000 +0000
++++ config/baseconfig.mk
+@@ -2,10 +2,10 @@
+ # directly in python/mozbuild/mozbuild/base.py for gmake validation.
+ # We thus use INCLUDED_AUTOCONF_MK to enable/disable some parts depending
+ # whether a normal build is happening or whether the check is running.
+-includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+-idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+-sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
++includedir := $(includedir)/${MOZILLA_PKG_NAME}
++idldir = $(datadir)/idl/${MOZILLA_PKG_NAME}
++installdir = $(libdir)/${MOZILLA_PKG_NAME}
++sdkdir = $(libdir)/${MOZILLA_PKG_NAME}
+ ifeq (.,$(DEPTH))
+ DIST = dist
+ else
diff --git a/firefox-webrtc/patches/patch-config_external_moz.build b/firefox-webrtc/patches/patch-config_external_moz.build
new file mode 100644
index 0000000..057d8a3
--- /dev/null
+++ b/firefox-webrtc/patches/patch-config_external_moz.build
@@ -0,0 +1,38 @@
+$NetBSD: patch-config_external_moz.build,v 1.13 2016/08/06 08:46:59 ryoon Exp $
+
+* Support system libraries
+
+--- config/external/moz.build.orig 2016-07-25 20:22:04.000000000 +0000
++++ config/external/moz.build
+@@ -21,10 +21,19 @@ if CONFIG['MOZ_UPDATER']:
+ external_dirs += ['modules/brotli']
+ external_dirs += ['modules/woff2']
+
+-if CONFIG['MOZ_VORBIS']:
++if not CONFIG['MOZ_SYSTEM_OGG']:
++ external_dirs += ['media/libogg']
++
++if not CONFIG['MOZ_SYSTEM_CELT'] or not CONFIG['MOZ_SYSTEM_OPUS']:
++ external_dirs += ['media/libopus']
++
++if not CONFIG['MOZ_SYSTEM_THEORA']:
++ external_dirs += ['media/libtheora']
++
++if CONFIG['MOZ_VORBIS'] and not CONFIG['MOZ_SYSTEM_VORBIS']:
+ external_dirs += ['media/libvorbis']
+
+-if CONFIG['MOZ_TREMOR']:
++if CONFIG['MOZ_TREMOR'] and not CONFIG['MOZ_SYSTEM_TREMOR']:
+ external_dirs += ['media/libtremor']
+
+ if CONFIG['MOZ_WEBM_ENCODER']:
+@@ -52,9 +61,6 @@ external_dirs += [
+ 'media/kiss_fft',
+ 'media/libcubeb',
+ 'media/libnestegg',
+- 'media/libogg',
+- 'media/libopus',
+- 'media/libtheora',
+ 'media/libspeex_resampler',
+ 'media/libstagefright',
+ 'media/libsoundtouch',
diff --git a/firefox-webrtc/patches/patch-config_stl__wrappers_ios b/firefox-webrtc/patches/patch-config_stl__wrappers_ios
new file mode 100644
index 0000000..afc51f1
--- /dev/null
+++ b/firefox-webrtc/patches/patch-config_stl__wrappers_ios
@@ -0,0 +1,8 @@
+$NetBSD: patch-config_stl__wrappers_ios,v 1.5 2014/02/20 13:19:03 ryoon Exp $
+
+--- config/stl_wrappers/ios.orig 2013-05-13 18:23:07.000000000 +0000
++++ config/stl_wrappers/ios
+@@ -0,0 +1,3 @@
++#pragma GCC visibility push(default)
++#include_next <ios>
++#pragma GCC visibility pop
diff --git a/firefox-webrtc/patches/patch-config_stl__wrappers_ostream b/firefox-webrtc/patches/patch-config_stl__wrappers_ostream
new file mode 100644
index 0000000..9b888f2
--- /dev/null
+++ b/firefox-webrtc/patches/patch-config_stl__wrappers_ostream
@@ -0,0 +1,8 @@
+$NetBSD: patch-config_stl__wrappers_ostream,v 1.5 2014/02/20 13:19:03 ryoon Exp $
+
+--- config/stl_wrappers/ostream.orig 2013-05-13 18:22:40.000000000 +0000
++++ config/stl_wrappers/ostream
+@@ -0,0 +1,3 @@
++#pragma GCC visibility push(default)
++#include_next <ostream>
++#pragma GCC visibility pop
diff --git a/firefox-webrtc/patches/patch-config_system-headers b/firefox-webrtc/patches/patch-config_system-headers
new file mode 100644
index 0000000..f919429
--- /dev/null
+++ b/firefox-webrtc/patches/patch-config_system-headers
@@ -0,0 +1,86 @@
+$NetBSD: patch-config_system-headers,v 1.20 2016/08/06 08:46:59 ryoon Exp $
+
+* Try to support Video4Linux2
+* Resolve libm undefined error
+* Support system libraries
+
+--- config/system-headers.orig 2016-07-25 20:22:04.000000000 +0000
++++ config/system-headers
+@@ -631,6 +631,7 @@ libgnome/libgnome.h
+ libgnomeui/gnome-icon-lookup.h
+ libgnomeui/gnome-icon-theme.h
+ libgnomeui/gnome-ui-init.h
++libv4l2.h
+ limits
+ limits.h
+ link.h
+@@ -724,6 +725,7 @@ mapiutil.h
+ mapix.h
+ Math64.h
+ math.h
++complex
+ mbstring.h
+ #ifdef ANDROID
+ media/AudioEffect.h
+@@ -1315,6 +1317,25 @@ vpx/vp8cx.h
+ vpx/vp8dx.h
+ vpx_mem/vpx_mem.h
+ #endif
++#ifdef GKMEDIAS_SHARED_LIBRARY
++vpx/vpx_codec.h
++vpx/vpx_decoder.h
++vpx/vpx_encoder.h
++vpx/vp8cx.h
++vpx/vp8dx.h
++vpx_mem/vpx_mem.h
++vorbis/codec.h
++theora/theoradec.h
++tremor/ivorbiscodec.h
++speex/speex_resampler.h
++soundtouch/SoundTouch.h
++ogg/ogg.h
++ogg/os_types.h
++nestegg/nestegg.h
++cubeb/cubeb.h
++speex/speex_resampler.h
++soundtouch/SoundTouch.h
++#endif
+ gst/gst.h
+ gst/app/gstappsink.h
+ gst/app/gstappsrc.h
+@@ -1345,3 +1366,35 @@ unicode/utypes.h
+ #endif
+ libutil.h
+ unwind.h
++#if MOZ_SYSTEM_OGG==1
++ogg/ogg.h
++ogg/os_types.h
++#endif
++#if MOZ_SYSTEM_THEORA==1
++theora/theoradec.h
++#endif
++#if MOZ_SYSTEM_VORBIS==1
++vorbis/codec.h
++vorbis/vorbisenc.h
++#endif
++#if MOZ_SYSTEM_TREMOR==1
++tremor/ivorbiscodec.h
++#endif
++#if MOZ_SYSTEM_CELT==1
++celt.h
++celt_header.h
++celt/celt.h
++celt/celt_header.h
++#endif
++#if MOZ_SYSTEM_OPUS==1
++opus.h
++opus_multistream.h
++opus/opus.h
++opus/opus_multistream.h
++#endif
++#if MOZ_SYSTEM_SPEEX==1
++speex/speex_resampler.h
++#endif
++#if MOZ_SYSTEM_SOUNDTOUCH==1
++soundtouch/SoundTouch.h
++#endif
diff --git a/firefox-webrtc/patches/patch-config_system__wrappers_unwind.h b/firefox-webrtc/patches/patch-config_system__wrappers_unwind.h
new file mode 100644
index 0000000..20d1fd6
--- /dev/null
+++ b/firefox-webrtc/patches/patch-config_system__wrappers_unwind.h
@@ -0,0 +1,9 @@
+$NetBSD: patch-config_system__wrappers_unwind.h,v 1.5 2014/02/20 13:19:03 ryoon Exp $
+
+--- config/system_wrappers/unwind.h.orig 2013-05-13 19:56:18.000000000 +0000
++++ config/system_wrappers/unwind.h
+@@ -0,0 +1,4 @@
++#pragma GCC system_header
++#pragma GCC visibility push(default)
++#include_next <unwind.h>
++#pragma GCC visibility pop
diff --git a/firefox-webrtc/patches/patch-dom_media_moz.build b/firefox-webrtc/patches/patch-dom_media_moz.build
new file mode 100644
index 0000000..7384638
--- /dev/null
+++ b/firefox-webrtc/patches/patch-dom_media_moz.build
@@ -0,0 +1,34 @@
+$NetBSD: patch-dom_media_moz.build,v 1.5 2016/08/06 08:46:59 ryoon Exp $
+
+* Support system libraries
+
+--- dom/media/moz.build.orig 2016-07-25 20:22:03.000000000 +0000
++++ dom/media/moz.build
+@@ -327,6 +327,27 @@ if CONFIG['ANDROID_VERSION'] > '15':
+ if CONFIG['MOZ_GONK_MEDIACODEC']:
+ DEFINES['MOZ_GONK_MEDIACODEC'] = True
+
++if CONFIG['MOZ_SYSTEM_OGG']:
++ CXXFLAGS += CONFIG['MOZ_OGG_CFLAGS']
++
++if CONFIG['MOZ_SYSTEM_THEORA']:
++ CXXFLAGS += CONFIG['MOZ_THEORA_CFLAGS']
++
++if CONFIG['MOZ_SYSTEM_VORBIS']:
++ CXXFLAGS += CONFIG['MOZ_VORBIS_CFLAGS']
++
++if CONFIG['MOZ_SYSTEM_TREMOR']:
++ CXXFLAGS += CONFIG['MOZ_TREMOR_CFLAGS']
++
++if CONFIG['MOZ_SYSTEM_OPUS']:
++ CXXFLAGS += CONFIG['MOZ_OPUS_CFLAGS']
++
++if CONFIG['MOZ_SYSTEM_SPEEX']:
++ CXXFLAGS += CONFIG['MOZ_SPEEX_CFLAGS']
++
++if CONFIG['MOZ_SYSTEM_SOUNDTOUCH']:
++ CXXFLAGS += CONFIG['MOZ_SOUNDTOUCH_CFLAGS']
++
+ include('/ipc/chromium/chromium-config.mozbuild')
+
+ # Suppress some GCC warnings being treated as errors:
diff --git a/firefox-webrtc/patches/patch-dom_plugins_ipc_PluginModuleChild.cpp b/firefox-webrtc/patches/patch-dom_plugins_ipc_PluginModuleChild.cpp
new file mode 100644
index 0000000..952d342
--- /dev/null
+++ b/firefox-webrtc/patches/patch-dom_plugins_ipc_PluginModuleChild.cpp
@@ -0,0 +1,33 @@
+$NetBSD: patch-dom_plugins_ipc_PluginModuleChild.cpp,v 1.8 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- dom/plugins/ipc/PluginModuleChild.cpp.orig 2015-03-27 02:20:27.000000000 +0000
++++ dom/plugins/ipc/PluginModuleChild.cpp
+@@ -320,7 +320,7 @@ PluginModuleChild::InitForChrome(const s
+
+ // TODO: use PluginPRLibrary here
+
+-#if defined(OS_LINUX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ mShutdownFunc =
+ (NP_PLUGINSHUTDOWN) PR_FindFunctionSymbol(mLibrary, "NP_Shutdown");
+
+@@ -1882,7 +1882,7 @@ PluginModuleChild::AnswerNP_GetEntryPoin
+ AssertPluginThread();
+ MOZ_ASSERT(mIsChrome);
+
+-#if defined(OS_LINUX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ return true;
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ *_retval = mGetEntryPointsFunc(&mFunctions);
+@@ -1927,7 +1927,7 @@ PluginModuleChild::DoNP_Initialize(const
+ #endif
+
+ NPError result;
+-#if defined(OS_LINUX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ result = mInitializeFunc(&sBrowserFuncs, &mFunctions);
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ result = mInitializeFunc(&sBrowserFuncs);
diff --git a/firefox-webrtc/patches/patch-dom_plugins_ipc_PluginModuleChild.h b/firefox-webrtc/patches/patch-dom_plugins_ipc_PluginModuleChild.h
new file mode 100644
index 0000000..92dc0d0
--- /dev/null
+++ b/firefox-webrtc/patches/patch-dom_plugins_ipc_PluginModuleChild.h
@@ -0,0 +1,15 @@
+$NetBSD: patch-dom_plugins_ipc_PluginModuleChild.h,v 1.4 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- dom/plugins/ipc/PluginModuleChild.h.orig 2013-05-11 19:19:27.000000000 +0000
++++ dom/plugins/ipc/PluginModuleChild.h
+@@ -325,7 +325,7 @@ private:
+
+ // we get this from the plugin
+ NP_PLUGINSHUTDOWN mShutdownFunc;
+-#if defined(OS_LINUX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ NP_PLUGINUNIXINIT mInitializeFunc;
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ NP_PLUGININIT mInitializeFunc;
diff --git a/firefox-webrtc/patches/patch-extensions_spellcheck_hunspell_glue_mozHunspell.cpp b/firefox-webrtc/patches/patch-extensions_spellcheck_hunspell_glue_mozHunspell.cpp
new file mode 100644
index 0000000..57c3e8b
--- /dev/null
+++ b/firefox-webrtc/patches/patch-extensions_spellcheck_hunspell_glue_mozHunspell.cpp
@@ -0,0 +1,21 @@
+$NetBSD: patch-extensions_spellcheck_hunspell_glue_mozHunspell.cpp,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* Read pkgsrc hunspell dictionaries
+
+--- extensions/spellcheck/hunspell/glue/mozHunspell.cpp.orig 2015-12-04 00:37:13.000000000 +0000
++++ extensions/spellcheck/hunspell/glue/mozHunspell.cpp
+@@ -392,6 +392,14 @@ mozHunspell::LoadDictionaryList(bool aNo
+ }
+ }
+
++ // load system hunspell dictionaries
++ nsCOMPtr<nsIFile> hunDir;
++ NS_NewNativeLocalFile(NS_LITERAL_CSTRING("@PREFIX@/share/hunspell"),
++ true, getter_AddRefs(hunDir));
++ if (hunDir) {
++ LoadDictionariesFromDir(hunDir);
++ }
++
+ // find dictionaries from extensions requiring restart
+ nsCOMPtr<nsISimpleEnumerator> dictDirs;
+ rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY_LIST,
diff --git a/firefox-webrtc/patches/patch-gfx_cairo_libpixman_src_pixman-arm-neon-asm.S b/firefox-webrtc/patches/patch-gfx_cairo_libpixman_src_pixman-arm-neon-asm.S
new file mode 100644
index 0000000..a975348
--- /dev/null
+++ b/firefox-webrtc/patches/patch-gfx_cairo_libpixman_src_pixman-arm-neon-asm.S
@@ -0,0 +1,39 @@
+$NetBSD: patch-gfx_cairo_libpixman_src_pixman-arm-neon-asm.S,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* Support NetBSD/earm
+
+--- gfx/cairo/libpixman/src/pixman-arm-neon-asm.S.orig 2015-09-29 21:45:08.000000000 +0000
++++ gfx/cairo/libpixman/src/pixman-arm-neon-asm.S
+@@ -34,6 +34,12 @@
+ * - pixman_composite_over_n_8_0565_asm_neon
+ */
+
++#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__)
++#define UNWIND
++#else
++#define UNWIND @
++#endif
++
+ /* Prevent the stack from becoming executable for no reason... */
+ #if defined(__linux__) && defined(__ELF__)
+ .section .note.GNU-stack,"",%progbits
+@@ -3141,7 +3147,8 @@ pixman_asm_function fname
+ TMP4 .req r9
+ STRIDE .req r2
+
+- .fnstart
++ .cfi_startproc
++ UNWIND .fnstart
+ mov ip, sp
+ .save {r4, r5, r6, r7, r8, r9}
+ push {r4, r5, r6, r7, r8, r9}
+@@ -3244,7 +3251,8 @@ pixman_asm_function fname
+ .endif
+ pop {r4, r5, r6, r7, r8, r9}
+ bx lr
+- .fnend
++ UNWIND .fnend
++ .cfi_endproc
+
+ .unreq OUT
+ .unreq TOP
diff --git a/firefox-webrtc/patches/patch-gfx_gl_GLContextProviderGLX.cpp b/firefox-webrtc/patches/patch-gfx_gl_GLContextProviderGLX.cpp
new file mode 100644
index 0000000..d022a72
--- /dev/null
+++ b/firefox-webrtc/patches/patch-gfx_gl_GLContextProviderGLX.cpp
@@ -0,0 +1,16 @@
+$NetBSD: patch-gfx_gl_GLContextProviderGLX.cpp,v 1.1 2015/07/05 11:55:06 martin Exp $
+
+Fix libGL.so filename on NetBSD,
+see https://bugzilla.mozilla.org/show_bug.cgi?id=1180498
+
+--- gfx/gl/GLContextProviderGLX.cpp.orig 2015-07-01 00:58:10.000000000 +0200
++++ gfx/gl/GLContextProviderGLX.cpp 2015-07-04 21:13:15.000000000 +0200
+@@ -82,7 +82,7 @@
+ // see e.g. bug 608526: it is intrinsically interesting to know whether we have dynamically linked to libGL.so.1
+ // because at least the NVIDIA implementation requires an executable stack, which causes mprotect calls,
+ // which trigger glibc bug http://sourceware.org/bugzilla/show_bug.cgi?id=12225
+-#ifdef __OpenBSD__
++#if defined(__OpenBSD__) || defined(__NetBSD__)
+ libGLfilename = "libGL.so";
+ #else
+ libGLfilename = "libGL.so.1";
diff --git a/firefox-webrtc/patches/patch-gfx_graphite2_src_Bidi.cpp b/firefox-webrtc/patches/patch-gfx_graphite2_src_Bidi.cpp
new file mode 100644
index 0000000..ab93f9d
--- /dev/null
+++ b/firefox-webrtc/patches/patch-gfx_graphite2_src_Bidi.cpp
@@ -0,0 +1,18 @@
+$NetBSD: patch-gfx_graphite2_src_Bidi.cpp,v 1.4 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- gfx/graphite2/src/Bidi.cpp.orig 2013-05-11 19:19:30.000000000 +0000
++++ gfx/graphite2/src/Bidi.cpp
+@@ -30,6 +30,11 @@ of the License or (at your option) any l
+
+ using namespace graphite2;
+
++#ifdef __sun
++#undef CS
++#undef ES
++#endif
++
+ enum DirCode { // Hungarian: dirc
+ Unk = -1,
+ N = 0, // other neutrals (default) - ON
diff --git a/firefox-webrtc/patches/patch-gfx_skia_skia_src_core_SkUtilsArm.cpp b/firefox-webrtc/patches/patch-gfx_skia_skia_src_core_SkUtilsArm.cpp
new file mode 100644
index 0000000..948a38a
--- /dev/null
+++ b/firefox-webrtc/patches/patch-gfx_skia_skia_src_core_SkUtilsArm.cpp
@@ -0,0 +1,29 @@
+$NetBSD: patch-gfx_skia_skia_src_core_SkUtilsArm.cpp,v 1.3 2016/06/16 12:08:21 ryoon Exp $
+
+* Support NetBSD
+
+--- gfx/skia/skia/src/core/SkUtilsArm.cpp.orig 2016-04-15 16:57:41.000000000 +0000
++++ gfx/skia/skia/src/core/SkUtilsArm.cpp
+@@ -16,6 +16,10 @@
+ #include <string.h>
+ #include <pthread.h>
+
++#if defined(__NetBSD__)
++#include <sys/sysctl.h>
++#endif
++
+ #if defined(SK_BUILD_FOR_ANDROID)
+ # ifdef MOZ_SKIA
+ # include "mozilla/arm.h"
+@@ -24,6 +28,11 @@
+ # endif
+ #endif
+
++#if !defined(TEMP_FAILURE_RETRY)
++ // TEMP_FAILURE_RETRY is glibc specific
++# define TEMP_FAILURE_RETRY
++#endif
++
+ // A function used to determine at runtime if the target CPU supports
+ // the ARM NEON instruction set. This implementation is Linux-specific.
+ static bool sk_cpu_arm_check_neon(void) {
diff --git a/firefox-webrtc/patches/patch-gfx_ycbcr_moz.build b/firefox-webrtc/patches/patch-gfx_ycbcr_moz.build
new file mode 100644
index 0000000..0160522
--- /dev/null
+++ b/firefox-webrtc/patches/patch-gfx_ycbcr_moz.build
@@ -0,0 +1,15 @@
+$NetBSD: patch-gfx_ycbcr_moz.build,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* yuv_row_arm.S requires pre-processor
+
+--- gfx/ycbcr/moz.build.orig 2014-11-26 12:30:03.000000000 +0000
++++ gfx/ycbcr/moz.build
+@@ -63,7 +63,7 @@ else:
+
+ if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['HAVE_ARM_NEON']:
+ SOURCES += [
+- 'yuv_row_arm.s',
++ 'yuv_row_arm.S',
+ ]
+ SOURCES += [
+ 'yuv_convert_arm.cpp',
diff --git a/firefox-webrtc/patches/patch-gfx_ycbcr_yuv__row__arm.S b/firefox-webrtc/patches/patch-gfx_ycbcr_yuv__row__arm.S
new file mode 100644
index 0000000..ed48334
--- /dev/null
+++ b/firefox-webrtc/patches/patch-gfx_ycbcr_yuv__row__arm.S
@@ -0,0 +1,319 @@
+$NetBSD: patch-gfx_ycbcr_yuv__row__arm.S,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* Copy from yuv_row_arm.s to process it with pre-processor
+
+--- gfx/ycbcr/yuv_row_arm.S.orig 2014-12-01 14:53:14.000000000 +0000
++++ gfx/ycbcr/yuv_row_arm.S
+@@ -0,0 +1,312 @@
++/* This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__)
++#define UNWIND
++#else
++#define UNWIND @
++#endif
++
++ .arch armv7-a
++ .fpu neon
++/* Allow to build on targets not supporting neon, and force the object file
++ * target to avoid bumping the final binary target */
++ .object_arch armv4t
++ .text
++ .align
++
++ .balign 64
++YCbCr42xToRGB565_DITHER03_CONSTS_NEON:
++ .short -14240
++ .short -14240+384
++ .short 8672
++ .short 8672+192
++ .short -17696
++ .short -17696+384
++ .byte 102
++ .byte 25
++ .byte 52
++ .byte 129
++YCbCr42xToRGB565_DITHER12_CONSTS_NEON:
++ .short -14240+128
++ .short -14240+256
++ .short 8672+64
++ .short 8672+128
++ .short -17696+128
++ .short -17696+256
++ .byte 102
++ .byte 25
++ .byte 52
++ .byte 129
++YCbCr42xToRGB565_DITHER21_CONSTS_NEON:
++ .short -14240+256
++ .short -14240+128
++ .short 8672+128
++ .short 8672+64
++ .short -17696+256
++ .short -17696+128
++ .byte 102
++ .byte 25
++ .byte 52
++ .byte 129
++YCbCr42xToRGB565_DITHER30_CONSTS_NEON:
++ .short -14240+384
++ .short -14240
++ .short 8672+192
++ .short 8672
++ .short -17696+384
++ .short -17696
++ .byte 102
++ .byte 25
++ .byte 52
++ .byte 129
++
++@ void ScaleYCbCr42xToRGB565_BilinearY_Row_NEON(
++@ yuv2rgb565_row_scale_bilinear_ctx *ctx, int dither);
++@
++@ ctx = {
++@ uint16_t *rgb_row; /*r0*/
++@ const uint8_t *y_row; /*r1*/
++@ const uint8_t *u_row; /*r2*/
++@ const uint8_t *v_row; /*r3*/
++@ int y_yweight; /*r4*/
++@ int y_pitch; /*r5*/
++@ int width; /*r6*/
++@ int source_x0_q16; /*r7*/
++@ int source_dx_q16; /*r8*/
++@ int source_uv_xoffs_q16; /*r9*/
++@ };
++ .global ScaleYCbCr42xToRGB565_BilinearY_Row_NEON
++ .type ScaleYCbCr42xToRGB565_BilinearY_Row_NEON, %function
++ .balign 64
++ .cfi_startproc
++ UNWIND .fnstart
++ScaleYCbCr42xToRGB565_BilinearY_Row_NEON:
++ STMFD r13!,{r4-r9,r14} @ 8 words.
++ ADR r14,YCbCr42xToRGB565_DITHER03_CONSTS_NEON
++ VPUSH {Q4-Q7} @ 16 words.
++ ADD r14,r14,r1, LSL #4 @ Select the dither table to use
++ LDMIA r0, {r0-r9}
++ @ Set up image index registers.
++ ADD r12,r8, r8
++ VMOV.I32 D16,#0 @ Q8 = < 2| 2| 0| 0>*source_dx_q16
++ VDUP.32 D17,r12
++ ADD r12,r12,r12
++ VTRN.32 D16,D17 @ Q2 = < 2| 0| 2| 0>*source_dx_q16
++ VDUP.32 D19,r12 @ Q9 = < 4| 4| ?| ?>*source_dx_q16
++ ADD r12,r12,r12
++ VDUP.32 Q0, r7 @ Q0 = < 1| 1| 1| 1>*source_x0_q16
++ VADD.I32 D17,D17,D19 @ Q8 = < 6| 4| 2| 0>*source_dx_q16
++ CMP r8, #0 @ If source_dx_q16 is negative...
++ VDUP.32 Q9, r12 @ Q9 = < 8| 8| 8| 8>*source_dx_q16
++ ADDLT r7, r7, r8, LSL #4 @ Make r7 point to the end of the block
++ VADD.I32 Q0, Q0, Q8 @ Q0 = < 6| 4| 2| 0>*source_dx_q16+source_x0_q16
++ SUBLT r7, r7, r8 @ (i.e., the lowest address we'll use)
++ VADD.I32 Q1, Q0, Q9 @ Q1 = <14|12|10| 8>*source_dx_q16+source_x0_q16
++ VDUP.I32 Q9, r8 @ Q8 = < 1| 1| 1| 1>*source_dx_q16
++ VADD.I32 Q2, Q0, Q9 @ Q2 = < 7| 5| 3| 1>*source_dx_q16+source_x0_q16
++ VADD.I32 Q3, Q1, Q9 @ Q3 = <15|13|11| 9>*source_dx_q16+source_x0_q16
++ VLD1.64 {D30,D31},[r14,:128] @ Load some constants
++ VMOV.I8 D28,#52
++ VMOV.I8 D29,#129
++ @ The basic idea here is to do aligned loads of a block of data and then
++ @ index into it using VTBL to extract the data from the source X
++ @ coordinate corresponding to each destination pixel.
++ @ This is significantly less code and significantly fewer cycles than doing
++ @ a series of single-lane loads, but it means that the X step between
++ @ pixels must be limited to 2.0 or less, otherwise we couldn't guarantee
++ @ that we could read 8 pixels from a single aligned 32-byte block of data.
++ @ Q0...Q3 contain the 16.16 fixed-point X coordinates of each pixel,
++ @ separated into even pixels and odd pixels to make extracting offsets and
++ @ weights easier.
++ @ We then pull out two bytes from the middle of each coordinate: the top
++ @ byte corresponds to the integer part of the X coordinate, and the bottom
++ @ byte corresponds to the weight to use for bilinear blending.
++ @ These are separated out into different registers with VTRN.
++ @ Then by subtracting the integer X coordinate of the first pixel in the
++ @ data block we loaded, we produce an index register suitable for use by
++ @ VTBL.
++s42xbily_neon_loop:
++ @ Load the Y' data.
++ MOV r12,r7, ASR #16
++ VRSHRN.S32 D16,Q0, #8
++ AND r12,r12,#~15 @ Read 16-byte aligned blocks
++ VDUP.I8 D20,r12
++ ADD r12,r1, r12 @ r12 = y_row+(source_x&~7)
++ VRSHRN.S32 D17,Q1, #8
++ PLD [r12,#64]
++ VLD1.64 {D8, D9, D10,D11},[r12,:128],r5 @ Load Y' top row
++ ADD r14,r7, r8, LSL #3
++ VRSHRN.S32 D18,Q2, #8
++ MOV r14,r14,ASR #16
++ VRSHRN.S32 D19,Q3, #8
++ AND r14,r14,#~15 @ Read 16-byte aligned blocks
++ VLD1.64 {D12,D13,D14,D15},[r12,:128] @ Load Y' bottom row
++ PLD [r12,#64]
++ VDUP.I8 D21,r14
++ ADD r14,r1, r14 @ r14 = y_row+(source_x&~7)
++ VMOV.I8 Q13,#1
++ PLD [r14,#64]
++ VTRN.8 Q8, Q9 @ Q8 = <wFwEwDwCwBwAw9w8w7w6w5w4w3w2w1w0>
++ @ Q9 = <xFxExDxCxBxAx9x8x7x6x5x4x3x2x1x0>
++ VSUB.S8 Q9, Q9, Q10 @ Make offsets relative to the data we loaded.
++ @ First 8 Y' pixels
++ VTBL.8 D20,{D8, D9, D10,D11},D18 @ Index top row at source_x
++ VTBL.8 D24,{D12,D13,D14,D15},D18 @ Index bottom row at source_x
++ VADD.S8 Q13,Q9, Q13 @ Add 1 to source_x
++ VTBL.8 D22,{D8, D9, D10,D11},D26 @ Index top row at source_x+1
++ VTBL.8 D26,{D12,D13,D14,D15},D26 @ Index bottom row at source_x+1
++ @ Next 8 Y' pixels
++ VLD1.64 {D8, D9, D10,D11},[r14,:128],r5 @ Load Y' top row
++ VLD1.64 {D12,D13,D14,D15},[r14,:128] @ Load Y' bottom row
++ PLD [r14,#64]
++ VTBL.8 D21,{D8, D9, D10,D11},D19 @ Index top row at source_x
++ VTBL.8 D25,{D12,D13,D14,D15},D19 @ Index bottom row at source_x
++ VTBL.8 D23,{D8, D9, D10,D11},D27 @ Index top row at source_x+1
++ VTBL.8 D27,{D12,D13,D14,D15},D27 @ Index bottom row at source_x+1
++ @ Blend Y'.
++ VDUP.I16 Q9, r4 @ Load the y weights.
++ VSUBL.U8 Q4, D24,D20 @ Q5:Q4 = c-a
++ VSUBL.U8 Q5, D25,D21
++ VSUBL.U8 Q6, D26,D22 @ Q7:Q6 = d-b
++ VSUBL.U8 Q7, D27,D23
++ VMUL.S16 Q4, Q4, Q9 @ Q5:Q4 = (c-a)*yweight
++ VMUL.S16 Q5, Q5, Q9
++ VMUL.S16 Q6, Q6, Q9 @ Q7:Q6 = (d-b)*yweight
++ VMUL.S16 Q7, Q7, Q9
++ VMOVL.U8 Q12,D16 @ Promote the x weights to 16 bits.
++ VMOVL.U8 Q13,D17 @ Sadly, there's no VMULW.
++ VRSHRN.S16 D8, Q4, #8 @ Q4 = (c-a)*yweight+128>>8
++ VRSHRN.S16 D9, Q5, #8
++ VRSHRN.S16 D12,Q6, #8 @ Q6 = (d-b)*yweight+128>>8
++ VRSHRN.S16 D13,Q7, #8
++ VADD.I8 Q10,Q10,Q4 @ Q10 = a+((c-a)*yweight+128>>8)
++ VADD.I8 Q11,Q11,Q6 @ Q11 = b+((d-b)*yweight+128>>8)
++ VSUBL.U8 Q4, D22,D20 @ Q5:Q4 = b-a
++ VSUBL.U8 Q5, D23,D21
++ VMUL.S16 Q4, Q4, Q12 @ Q5:Q4 = (b-a)*xweight
++ VMUL.S16 Q5, Q5, Q13
++ VRSHRN.S16 D8, Q4, #8 @ Q4 = (b-a)*xweight+128>>8
++ ADD r12,r7, r9
++ VRSHRN.S16 D9, Q5, #8
++ MOV r12,r12,ASR #17
++ VADD.I8 Q8, Q10,Q4 @ Q8 = a+((b-a)*xweight+128>>8)
++ @ Start extracting the chroma x coordinates, and load Cb and Cr.
++ AND r12,r12,#~15 @ Read 16-byte aligned blocks
++ VDUP.I32 Q9, r9 @ Q9 = source_uv_xoffs_q16 x 4
++ ADD r14,r2, r12
++ VADD.I32 Q10,Q0, Q9
++ VLD1.64 {D8, D9, D10,D11},[r14,:128] @ Load Cb
++ PLD [r14,#64]
++ VADD.I32 Q11,Q1, Q9
++ ADD r14,r3, r12
++ VADD.I32 Q12,Q2, Q9
++ VLD1.64 {D12,D13,D14,D15},[r14,:128] @ Load Cr
++ PLD [r14,#64]
++ VADD.I32 Q13,Q3, Q9
++ VRSHRN.S32 D20,Q10,#9 @ Q10 = <xEwExCwCxAwAx8w8x6w6x4w4x2w2x0w0>
++ VRSHRN.S32 D21,Q11,#9
++ VDUP.I8 Q9, r12
++ VRSHRN.S32 D22,Q12,#9 @ Q11 = <xFwFxDwDxBwBx9w9x7w7x5w5x3w3x1w1>
++ VRSHRN.S32 D23,Q13,#9
++ @ We don't actually need the x weights, but we get them for free.
++ @ Free ALU slot
++ VTRN.8 Q10,Q11 @ Q10 = <wFwEwDwCwBwAw9w8w7w6w5w4w3w2w1w0>
++ @ Free ALU slot @ Q11 = <xFxExDxCxBxAx9x8x7x6x5x4x3x2x1x0>
++ VSUB.S8 Q11,Q11,Q9 @ Make offsets relative to the data we loaded.
++ VTBL.8 D18,{D8, D9, D10,D11},D22 @ Index Cb at source_x
++ VMOV.I8 D24,#74
++ VTBL.8 D19,{D8, D9, D10,D11},D23
++ VMOV.I8 D26,#102
++ VTBL.8 D20,{D12,D13,D14,D15},D22 @ Index Cr at source_x
++ VMOV.I8 D27,#25
++ VTBL.8 D21,{D12,D13,D14,D15},D23
++ @ We now have Y' in Q8, Cb in Q9, and Cr in Q10
++ @ We use VDUP to expand constants, because it's a permute instruction, so
++ @ it can dual issue on the A8.
++ SUBS r6, r6, #16 @ width -= 16
++ VMULL.U8 Q4, D16,D24 @ Q5:Q4 = Y'*74
++ VDUP.32 Q6, D30[1] @ Q7:Q6 = bias_G
++ VMULL.U8 Q5, D17,D24
++ VDUP.32 Q7, D30[1]
++ VMLSL.U8 Q6, D18,D27 @ Q7:Q6 = -25*Cb+bias_G
++ VDUP.32 Q11,D30[0] @ Q12:Q11 = bias_R
++ VMLSL.U8 Q7, D19,D27
++ VDUP.32 Q12,D30[0]
++ VMLAL.U8 Q11,D20,D26 @ Q12:Q11 = 102*Cr+bias_R
++ VDUP.32 Q8, D31[0] @ Q13:Q8 = bias_B
++ VMLAL.U8 Q12,D21,D26
++ VDUP.32 Q13,D31[0]
++ VMLAL.U8 Q8, D18,D29 @ Q13:Q8 = 129*Cb+bias_B
++ VMLAL.U8 Q13,D19,D29
++ VMLSL.U8 Q6, D20,D28 @ Q7:Q6 = -25*Cb-52*Cr+bias_G
++ VMLSL.U8 Q7, D21,D28
++ VADD.S16 Q11,Q4, Q11 @ Q12:Q11 = 74*Y'+102*Cr+bias_R
++ VADD.S16 Q12,Q5, Q12
++ VQADD.S16 Q8, Q4, Q8 @ Q13:Q8 = 74*Y'+129*Cr+bias_B
++ VQADD.S16 Q13,Q5, Q13
++ VADD.S16 Q6, Q4, Q6 @ Q7:Q6 = 74*Y'-25*Cb-52*Cr+bias_G
++ VADD.S16 Q7, Q5, Q7
++ @ Push each value to the top of its word and saturate it.
++ VQSHLU.S16 Q11,Q11,#2
++ VQSHLU.S16 Q12,Q12,#2
++ VQSHLU.S16 Q6, Q6, #2
++ VQSHLU.S16 Q7, Q7, #2
++ VQSHLU.S16 Q8, Q8, #2
++ VQSHLU.S16 Q13,Q13,#2
++ @ Merge G and B into R.
++ VSRI.U16 Q11,Q6, #5
++ VSRI.U16 Q12,Q7, #5
++ VSRI.U16 Q11,Q8, #11
++ MOV r14,r8, LSL #4
++ VSRI.U16 Q12,Q13,#11
++ BLT s42xbily_neon_tail
++ VDUP.I32 Q13,r14
++ @ Store the result.
++ VST1.16 {D22,D23,D24,D25},[r0]!
++ BEQ s42xbily_neon_done
++ @ Advance the x coordinates.
++ VADD.I32 Q0, Q0, Q13
++ VADD.I32 Q1, Q1, Q13
++ ADD r7, r14
++ VADD.I32 Q2, Q2, Q13
++ VADD.I32 Q3, Q3, Q13
++ B s42xbily_neon_loop
++s42xbily_neon_tail:
++ @ We have between 1 and 15 pixels left to write.
++ @ -r6 == the number of pixels we need to skip writing.
++ @ Adjust r0 to point to the last one we need to write, because we're going
++ @ to write them in reverse order.
++ ADD r0, r0, r6, LSL #1
++ MOV r14,#-2
++ ADD r0, r0, #30
++ @ Skip past the ones we don't need to write.
++ SUB PC, PC, r6, LSL #2
++ ORR r0, r0, r0
++ VST1.16 {D25[3]},[r0,:16],r14
++ VST1.16 {D25[2]},[r0,:16],r14
++ VST1.16 {D25[1]},[r0,:16],r14
++ VST1.16 {D25[0]},[r0,:16],r14
++ VST1.16 {D24[3]},[r0,:16],r14
++ VST1.16 {D24[2]},[r0,:16],r14
++ VST1.16 {D24[1]},[r0,:16],r14
++ VST1.16 {D24[0]},[r0,:16],r14
++ VST1.16 {D23[3]},[r0,:16],r14
++ VST1.16 {D23[2]},[r0,:16],r14
++ VST1.16 {D23[1]},[r0,:16],r14
++ VST1.16 {D23[0]},[r0,:16],r14
++ VST1.16 {D22[3]},[r0,:16],r14
++ VST1.16 {D22[2]},[r0,:16],r14
++ VST1.16 {D22[1]},[r0,:16],r14
++ VST1.16 {D22[0]},[r0,:16]
++s42xbily_neon_done:
++ VPOP {Q4-Q7} @ 16 words.
++ LDMFD r13!,{r4-r9,PC} @ 8 words.
++ UNWIND .fnend
++ .cfi_endproc
++ .size ScaleYCbCr42xToRGB565_BilinearY_Row_NEON, .-ScaleYCbCr42xToRGB565_BilinearY_Row_NEON
++
++#if defined(__ELF__)&&(defined(__linux__) || defined(__NetBSD__))
++ .section .note.GNU-stack,"",%progbits
++#endif
diff --git a/firefox-webrtc/patches/patch-image_decoders_nsJPEGDecoder.cpp b/firefox-webrtc/patches/patch-image_decoders_nsJPEGDecoder.cpp
new file mode 100644
index 0000000..bde570a
--- /dev/null
+++ b/firefox-webrtc/patches/patch-image_decoders_nsJPEGDecoder.cpp
@@ -0,0 +1,366 @@
+$NetBSD: patch-image_decoders_nsJPEGDecoder.cpp,v 1.7 2016/06/16 12:08:21 ryoon Exp $
+
+Partially revert https://bugzilla.mozilla.org/show_bug.cgi?id=791305
+to allow building against jpeg (not jpeg-turbo).
+
+--- image/decoders/nsJPEGDecoder.cpp.orig 2015-04-20 02:19:51.000000000 +0000
++++ image/decoders/nsJPEGDecoder.cpp
+@@ -23,13 +23,28 @@
+
+ extern "C" {
+ #include "iccjpeg.h"
+-}
+
++#ifdef JCS_EXTENSIONS
+ #if MOZ_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);
+
+@@ -373,6 +388,7 @@ nsJPEGDecoder::WriteInternal(const char*
+ 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) {
+@@ -381,6 +397,9 @@ nsJPEGDecoder::WriteInternal(const char*
+ } else {
+ mInfo.out_color_space = JCS_RGB;
+ }
++#else
++ mInfo.out_color_space = JCS_RGB;
++#endif
+ break;
+ case JCS_CMYK:
+ case JCS_YCCK:
+@@ -448,6 +467,15 @@ nsJPEGDecoder::WriteInternal(const char*
+ 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;
+@@ -629,7 +657,11 @@ nsJPEGDecoder::OutputScanlines(bool* sus
+
+ MOZ_ASSERT(imageRow, "Should have a row buffer here");
+
++#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
+@@ -953,6 +985,282 @@ term_source (j_decompress_ptr jd)
+ } // namespace image
+ } // 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.
+ /// Output is RGB stored as 3 bytes per pixel.
diff --git a/firefox-webrtc/patches/patch-intl_hyphenation_glue_hnjalloc.h b/firefox-webrtc/patches/patch-intl_hyphenation_glue_hnjalloc.h
new file mode 100644
index 0000000..a1921df
--- /dev/null
+++ b/firefox-webrtc/patches/patch-intl_hyphenation_glue_hnjalloc.h
@@ -0,0 +1,16 @@
+$NetBSD: patch-intl_hyphenation_glue_hnjalloc.h,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- intl/hyphenation/glue/hnjalloc.h.orig 2015-12-04 00:36:54.000000000 +0000
++++ intl/hyphenation/glue/hnjalloc.h
+@@ -24,6 +24,9 @@
+ */
+
+ #include <stdio.h> /* ensure stdio.h is loaded before our macros */
++#ifdef __sun
++#include <wchar.h>
++#endif
+
+ #undef FILE
+ #define FILE hnjFile
diff --git a/firefox-webrtc/patches/patch-ipc_chromium_src_base_atomicops.h b/firefox-webrtc/patches/patch-ipc_chromium_src_base_atomicops.h
new file mode 100644
index 0000000..1c0edca
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_chromium_src_base_atomicops.h
@@ -0,0 +1,15 @@
+$NetBSD: patch-ipc_chromium_src_base_atomicops.h,v 1.1 2014/11/26 14:56:28 ryoon Exp $
+
+* Avoid invalid cast errors under NetBSD/evbearmv7hf-el.
+
+--- ipc/chromium/src/base/atomicops.h.orig 2014-11-13 22:49:59.000000000 +0000
++++ ipc/chromium/src/base/atomicops.h
+@@ -45,7 +45,7 @@ typedef int64_t Atomic64;
+
+ // Use AtomicWord for a machine-sized pointer. It will use the Atomic32 or
+ // Atomic64 routines below, depending on your architecture.
+-#ifdef OS_OPENBSD
++#if defined(OS_OPENBSD) || (defined(OS_NETBSD) && defined(ARCH_CPU_ARM_FAMILY))
+ #ifdef ARCH_CPU_64_BITS
+ typedef Atomic64 AtomicWord;
+ #else
diff --git a/firefox-webrtc/patches/patch-ipc_chromium_src_base_message__pump__libevent.cc b/firefox-webrtc/patches/patch-ipc_chromium_src_base_message__pump__libevent.cc
new file mode 100644
index 0000000..c37acc0
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_chromium_src_base_message__pump__libevent.cc
@@ -0,0 +1,22 @@
+$NetBSD: patch-ipc_chromium_src_base_message__pump__libevent.cc,v 1.6 2016/01/30 00:43:42 ryoon Exp $
+
+Allow older libevent
+
+--- ipc/chromium/src/base/message_pump_libevent.cc.orig 2016-01-23 23:23:38.000000000 +0000
++++ ipc/chromium/src/base/message_pump_libevent.cc
+@@ -20,6 +20,7 @@
+
+ // This macro checks that the _EVENT_SIZEOF_* constants defined in
+ // ipc/chromiume/src/third_party/<platform>/event2/event-config.h are correct.
++#if 0
+ #define CHECK_EVENT_SIZEOF(TYPE, type) \
+ static_assert(_EVENT_SIZEOF_##TYPE == sizeof(type), \
+ "bad _EVENT_SIZEOF_"#TYPE);
+@@ -30,6 +31,7 @@ CHECK_EVENT_SIZEOF(PTHREAD_T, pthread_t)
+ CHECK_EVENT_SIZEOF(SHORT, short);
+ CHECK_EVENT_SIZEOF(SIZE_T, size_t);
+ CHECK_EVENT_SIZEOF(VOID_P, void*);
++#endif
+
+ // Lifecycle of struct event
+ // Libevent uses two main data structures:
diff --git a/firefox-webrtc/patches/patch-ipc_chromium_src_base_platform__thread.h b/firefox-webrtc/patches/patch-ipc_chromium_src_base_platform__thread.h
new file mode 100644
index 0000000..8dd03c7
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_chromium_src_base_platform__thread.h
@@ -0,0 +1,16 @@
+$NetBSD: patch-ipc_chromium_src_base_platform__thread.h,v 1.5 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- ipc/chromium/src/base/platform_thread.h.orig 2016-05-12 17:13:13.000000000 +0000
++++ ipc/chromium/src/base/platform_thread.h
+@@ -25,6 +25,9 @@ typedef pthread_t PlatformThreadHandle;
+ #if defined(OS_LINUX) || defined(OS_OPENBSD) || defined(__GLIBC__)
+ #include <unistd.h>
+ typedef pid_t PlatformThreadId;
++#elif defined(OS_SOLARIS)
++#include <sys/lwp.h>
++typedef lwpid_t PlatformThreadId;
+ #elif defined(OS_BSD)
+ #include <sys/types.h>
+ typedef lwpid_t PlatformThreadId;
diff --git a/firefox-webrtc/patches/patch-ipc_chromium_src_base_platform__thread__posix.cc b/firefox-webrtc/patches/patch-ipc_chromium_src_base_platform__thread__posix.cc
new file mode 100644
index 0000000..7afaecb
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_chromium_src_base_platform__thread__posix.cc
@@ -0,0 +1,27 @@
+$NetBSD: patch-ipc_chromium_src_base_platform__thread__posix.cc,v 1.8 2016/06/16 12:08:21 ryoon Exp $
+
+* Support NetBSD
+* Support Solaris
+
+--- ipc/chromium/src/base/platform_thread_posix.cc.orig 2016-05-12 17:13:13.000000000 +0000
++++ ipc/chromium/src/base/platform_thread_posix.cc
+@@ -10,7 +10,9 @@
+ #if defined(OS_MACOSX)
+ #include <mach/mach.h>
+ #elif defined(OS_NETBSD)
++_Pragma("GCC visibility push(default)")
+ #include <lwp.h>
++_Pragma("GCC visibility pop")
+ #elif defined(OS_LINUX)
+ #include <sys/syscall.h>
+ #include <sys/prctl.h>
+@@ -105,7 +107,8 @@ void PlatformThread::SetName(const char*
+ pthread_setname_np(pthread_self(), "%s", (void *)name);
+ #elif defined(OS_BSD) && !defined(__GLIBC__)
+ pthread_set_name_np(pthread_self(), name);
+-#else
++#elif !defined(OS_SOLARIS)
++ prctl(PR_SET_NAME, reinterpret_cast<uintptr_t>(name), 0, 0, 0);
+ #endif
+ }
+ #endif // !OS_MACOSX
diff --git a/firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util.h b/firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util.h
new file mode 100644
index 0000000..8b738eb
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util.h
@@ -0,0 +1,14 @@
+$NetBSD: patch-ipc_chromium_src_base_process__util.h,v 1.6 2015/01/16 22:42:09 ryoon Exp $
+
+--- ipc/chromium/src/base/process_util.h.orig 2015-01-09 04:38:16.000000000 +0000
++++ ipc/chromium/src/base/process_util.h
+@@ -41,6 +41,9 @@
+ typedef PROCESSENTRY32 ProcessEntry;
+ typedef IO_COUNTERS IoCounters;
+ #elif defined(OS_POSIX)
++#ifndef NAME_MAX
++#define NAME_MAX _POSIX_NAME_MAX
++#endif
+ // TODO(port): we should not rely on a Win32 structure.
+ struct ProcessEntry {
+ int pid;
diff --git a/firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util__bsd.cc b/firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util__bsd.cc
new file mode 100644
index 0000000..a36c899
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util__bsd.cc
@@ -0,0 +1,15 @@
+$NetBSD: patch-ipc_chromium_src_base_process__util__bsd.cc,v 1.5 2016/08/06 08:46:59 ryoon Exp $
+
+--- ipc/chromium/src/base/process_util_bsd.cc.orig 2016-07-25 20:22:06.000000000 +0000
++++ ipc/chromium/src/base/process_util_bsd.cc
+@@ -10,6 +10,10 @@
+ #include <spawn.h>
+ #include <sys/wait.h>
+
++#if defined(OS_BSD)
++#include <kvm.h>
++#endif
++
+ #include <string>
+
+ #include "nspr.h"
diff --git a/firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util__posix.cc b/firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util__posix.cc
new file mode 100644
index 0000000..fc3fb61
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_chromium_src_base_process__util__posix.cc
@@ -0,0 +1,24 @@
+$NetBSD: patch-ipc_chromium_src_base_process__util__posix.cc,v 1.4 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- ipc/chromium/src/base/process_util_posix.cc.orig 2013-05-11 19:19:32.000000000 +0000
++++ ipc/chromium/src/base/process_util_posix.cc
+@@ -110,7 +110,7 @@ void CloseSuperfluousFds(const base::Inj
+ #if defined(ANDROID)
+ static const rlim_t kSystemDefaultMaxFds = 1024;
+ static const char kFDDir[] = "/proc/self/fd";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_SOLARIS)
+ static const rlim_t kSystemDefaultMaxFds = 8192;
+ static const char kFDDir[] = "/proc/self/fd";
+ #elif defined(OS_MACOSX)
+@@ -202,7 +202,7 @@ void CloseSuperfluousFds(const base::Inj
+ // TODO(agl): Remove this function. It's fundamentally broken for multithreaded
+ // apps.
+ void SetAllFDsToCloseOnExec() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_SOLARIS)
+ const char fd_dir[] = "/proc/self/fd";
+ #elif defined(OS_MACOSX) || defined(OS_BSD)
+ const char fd_dir[] = "/dev/fd";
diff --git a/firefox-webrtc/patches/patch-ipc_chromium_src_base_sys__info__posix.cc b/firefox-webrtc/patches/patch-ipc_chromium_src_base_sys__info__posix.cc
new file mode 100644
index 0000000..71f5d0d
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_chromium_src_base_sys__info__posix.cc
@@ -0,0 +1,18 @@
+$NetBSD: patch-ipc_chromium_src_base_sys__info__posix.cc,v 1.6 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- ipc/chromium/src/base/sys_info_posix.cc.orig 2016-01-15 01:01:44.000000000 +0000
++++ ipc/chromium/src/base/sys_info_posix.cc
+@@ -119,7 +119,11 @@ std::wstring SysInfo::GetEnvVar(const wc
+
+ // static
+ std::string SysInfo::OperatingSystemName() {
++#ifdef OS_SOLARIS
++ struct utsname info;
++#else
+ utsname info;
++#endif
+ if (uname(&info) < 0) {
+ NOTREACHED();
+ return "";
diff --git a/firefox-webrtc/patches/patch-ipc_chromium_src_base_time__posix.cc b/firefox-webrtc/patches/patch-ipc_chromium_src_base_time__posix.cc
new file mode 100644
index 0000000..a41c16a
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_chromium_src_base_time__posix.cc
@@ -0,0 +1,17 @@
+$NetBSD: patch-ipc_chromium_src_base_time__posix.cc,v 1.4 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- ipc/chromium/src/base/time_posix.cc.orig 2013-05-11 19:19:32.000000000 +0000
++++ ipc/chromium/src/base/time_posix.cc
+@@ -65,8 +65,10 @@ Time Time::FromExploded(bool is_local, c
+ timestruct.tm_wday = exploded.day_of_week; // mktime/timegm ignore this
+ timestruct.tm_yday = 0; // mktime/timegm ignore this
+ timestruct.tm_isdst = -1; // attempt to figure it out
++#ifndef OS_SOLARIS
+ timestruct.tm_gmtoff = 0; // not a POSIX field, so mktime/timegm ignore
+ timestruct.tm_zone = NULL; // not a POSIX field, so mktime/timegm ignore
++#endif
+
+ time_t seconds;
+ #ifdef ANDROID
diff --git a/firefox-webrtc/patches/patch-ipc_chromium_src_build_build__config.h b/firefox-webrtc/patches/patch-ipc_chromium_src_build_build__config.h
new file mode 100644
index 0000000..d3e5432
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_chromium_src_build_build__config.h
@@ -0,0 +1,24 @@
+$NetBSD: patch-ipc_chromium_src_build_build__config.h,v 1.4 2016/06/16 12:08:21 ryoon Exp $
+
+* Add Solaris identifier
+
+--- ipc/chromium/src/build/build_config.h.orig 2013-05-11 19:19:32.000000000 +0000
++++ ipc/chromium/src/build/build_config.h
+@@ -27,6 +27,8 @@
+ #define OS_NETBSD 1
+ #elif defined(__OpenBSD__)
+ #define OS_OPENBSD 1
++#elif defined(__sun)
++#define OS_SOLARIS 1
+ #elif defined(_WIN32)
+ #define OS_WIN 1
+ #else
+@@ -42,7 +44,7 @@
+
+ // For access to standard POSIX features, use OS_POSIX instead of a more
+ // specific macro.
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ #define OS_POSIX 1
+ #endif
+
diff --git a/firefox-webrtc/patches/patch-ipc_chromium_src_chrome_common_transport__dib.h b/firefox-webrtc/patches/patch-ipc_chromium_src_chrome_common_transport__dib.h
new file mode 100644
index 0000000..0481bde
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_chromium_src_chrome_common_transport__dib.h
@@ -0,0 +1,15 @@
+$NetBSD: patch-ipc_chromium_src_chrome_common_transport__dib.h,v 1.4 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- ipc/chromium/src/chrome/common/transport_dib.h.orig 2013-05-11 19:19:32.000000000 +0000
++++ ipc/chromium/src/chrome/common/transport_dib.h
+@@ -70,7 +70,7 @@ class TransportDIB {
+ typedef base::SharedMemoryHandle Handle;
+ // On Mac, the inode number of the backing file is used as an id.
+ typedef base::SharedMemoryId Id;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_SOLARIS)
+ typedef int Handle; // These two ints are SysV IPC shared memory keys
+ typedef int Id;
+ #endif
diff --git a/firefox-webrtc/patches/patch-ipc_glue_GeckoChildProcessHost.cpp b/firefox-webrtc/patches/patch-ipc_glue_GeckoChildProcessHost.cpp
new file mode 100644
index 0000000..03225dd
--- /dev/null
+++ b/firefox-webrtc/patches/patch-ipc_glue_GeckoChildProcessHost.cpp
@@ -0,0 +1,48 @@
+$NetBSD: patch-ipc_glue_GeckoChildProcessHost.cpp,v 1.11 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+* Fix NetBSD linking
+
+--- ipc/glue/GeckoChildProcessHost.cpp.orig 2015-01-09 04:38:16.000000000 +0000
++++ ipc/glue/GeckoChildProcessHost.cpp
+@@ -4,7 +4,13 @@
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
++#if defined(__NetBSD__)
++_Pragma("GCC visibility push(default)")
++#endif
+ #include "GeckoChildProcessHost.h"
++#if defined(__NetBSD__)
++_Pragma("GCC visibility pop")
++#endif
+
+ #include "base/command_line.h"
+ #include "base/string_util.h"
+@@ -533,7 +539,7 @@ GeckoChildProcessHost::PerformAsyncLaunc
+ // and passing wstrings from one config to the other is unsafe. So
+ // we split the logic here.
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ base::environment_map newEnvVars;
+ ChildPrivileges privs = mPrivileges;
+ if (privs == base::PRIVILEGES_DEFAULT) {
+@@ -672,7 +678,7 @@ GeckoChildProcessHost::PerformAsyncLaunc
+ childArgv.push_back(pidstring);
+
+ #if defined(MOZ_CRASHREPORTER)
+-# if defined(OS_LINUX) || defined(OS_BSD)
++# if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ int childCrashFd, childCrashRemapFd;
+ if (!CrashReporter::CreateNotificationPipeForChild(
+ &childCrashFd, &childCrashRemapFd))
+@@ -705,7 +711,7 @@ GeckoChildProcessHost::PerformAsyncLaunc
+ childArgv.push_back(childProcessType);
+
+ base::LaunchApp(childArgv, mFileMap,
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ newEnvVars, privs,
+ #endif
+ false, &process, arch);
diff --git a/firefox-webrtc/patches/patch-js__src__vm__SPSProfiler.cpp b/firefox-webrtc/patches/patch-js__src__vm__SPSProfiler.cpp
new file mode 100644
index 0000000..b16f426
--- /dev/null
+++ b/firefox-webrtc/patches/patch-js__src__vm__SPSProfiler.cpp
@@ -0,0 +1,16 @@
+$NetBSD: patch-js__src__vm__SPSProfiler.cpp,v 1.8 2016/06/16 12:08:21 ryoon Exp $
+
+Unclear fallout from our version of bug 840242, attachment v1: some architectures
+fail to link if we do not add the inlines here - might be compiler/arch specific.
+
+--- js/src/vm/SPSProfiler.cpp.orig 2014-04-18 02:03:21.000000000 +0000
++++ js/src/vm/SPSProfiler.cpp
+@@ -4,6 +4,8 @@
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
++#include "jscntxtinlines.h"
++
+ #include "vm/SPSProfiler.h"
+
+ #include "mozilla/DebugOnly.h"
diff --git a/firefox-webrtc/patches/patch-js_src_jit-LIR.cpp b/firefox-webrtc/patches/patch-js_src_jit-LIR.cpp
new file mode 100644
index 0000000..9eaeab9
--- /dev/null
+++ b/firefox-webrtc/patches/patch-js_src_jit-LIR.cpp
@@ -0,0 +1,15 @@
+$NetBSD: patch-js_src_jit-LIR.cpp,v 1.4 2016/06/16 12:08:21 ryoon Exp $
+
+* For NetBSD
+
+--- js/src/jit/LIR.cpp.orig 2015-08-24 21:53:12.000000000 +0000
++++ js/src/jit/LIR.cpp
+@@ -323,7 +323,7 @@ LNode::printName(GenericPrinter& out, Op
+ const char* name = names[op];
+ size_t len = strlen(name);
+ for (size_t i = 0; i < len; i++)
+- out.printf("%c", tolower(name[i]));
++ out.printf("%c", tolower((unsigned char)name[i]));
+ }
+
+ void
diff --git a/firefox-webrtc/patches/patch-js_src_jit_MIR.cpp b/firefox-webrtc/patches/patch-js_src_jit_MIR.cpp
new file mode 100644
index 0000000..e6084ab
--- /dev/null
+++ b/firefox-webrtc/patches/patch-js_src_jit_MIR.cpp
@@ -0,0 +1,15 @@
+$NetBSD: patch-js_src_jit_MIR.cpp,v 1.5 2016/06/16 12:08:21 ryoon Exp $
+
+* For NetBSD
+
+--- js/src/jit/MIR.cpp.orig 2016-05-12 17:05:02.000000000 +0000
++++ js/src/jit/MIR.cpp
+@@ -76,7 +76,7 @@ MDefinition::PrintOpcodeName(GenericPrin
+ const char* name = names[op];
+ size_t len = strlen(name);
+ for (size_t i = 0; i < len; i++)
+- out.printf("%c", tolower(name[i]));
++ out.printf("%c", tolower((unsigned char)name[i]));
+ }
+
+ static MConstant*
diff --git a/firefox-webrtc/patches/patch-js_src_jit_arm_Architecture-arm.cpp b/firefox-webrtc/patches/patch-js_src_jit_arm_Architecture-arm.cpp
new file mode 100644
index 0000000..dad9e70
--- /dev/null
+++ b/firefox-webrtc/patches/patch-js_src_jit_arm_Architecture-arm.cpp
@@ -0,0 +1,15 @@
+$NetBSD: patch-js_src_jit_arm_Architecture-arm.cpp,v 1.7 2016/06/16 12:08:21 ryoon Exp $
+
+* Support NetBSD/earm
+
+--- js/src/jit/arm/Architecture-arm.cpp.orig 2015-08-24 21:53:12.000000000 +0000
++++ js/src/jit/arm/Architecture-arm.cpp
+@@ -16,7 +16,7 @@
+ #include "jit/arm/Assembler-arm.h"
+ #include "jit/RegisterSets.h"
+
+-#if !defined(__linux__) || defined(ANDROID) || defined(JS_SIMULATOR_ARM)
++#if !defined(__linux__) || defined(ANDROID) || defined(JS_ARM_SIMULATOR) || defined(__NetBSD__)
+ // The Android NDK and B2G do not include the hwcap.h kernel header, and it is not
+ // defined when building the simulator, so inline the header defines we need.
+ # define HWCAP_VFP (1 << 6)
diff --git a/firefox-webrtc/patches/patch-js_src_jit_none_AtomicOperations-sparc.h b/firefox-webrtc/patches/patch-js_src_jit_none_AtomicOperations-sparc.h
new file mode 100644
index 0000000..5c18f53
--- /dev/null
+++ b/firefox-webrtc/patches/patch-js_src_jit_none_AtomicOperations-sparc.h
@@ -0,0 +1,261 @@
+$NetBSD: patch-js_src_jit_none_AtomicOperations-sparc.h,v 1.3 2016/09/20 20:01:41 ryoon Exp $
+
+Part of https://bugzilla.mozilla.org/show_bug.cgi?id=1232150
+
+--- js/src/jit/none/AtomicOperations-sparc.h.orig 2016-08-01 16:14:38.000000000 +0000
++++ js/src/jit/none/AtomicOperations-sparc.h
+@@ -249,3 +249,254 @@ js::jit::RegionLock::release(void* addr)
+ #endif
+
+ #endif // jit_sparc_AtomicOperations_sparc_h
++/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
++ * vim: set ts=8 sts=4 et sw=4 tw=99:
++ * This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++/* For documentation, see jit/AtomicOperations.h */
++
++#ifndef jit_sparc_AtomicOperations_sparc_h
++#define jit_sparc_AtomicOperations_sparc_h
++
++#include "mozilla/Assertions.h"
++#include "mozilla/Types.h"
++
++#if defined(__clang__) || defined(__GNUC__)
++
++// The default implementation tactic for gcc/clang is to use the newer
++// __atomic intrinsics added for use in C++11 <atomic>. Where that
++// isn't available, we use GCC's older __sync functions instead.
++//
++// ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS is kept as a backward
++// compatible option for older compilers: enable this to use GCC's old
++// __sync functions instead of the newer __atomic functions. This
++// will be required for GCC 4.6.x and earlier, and probably for Clang
++// 3.1, should we need to use those versions.
++
++//#define ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++
++inline bool
++js::jit::AtomicOperations::isLockfree8()
++{
++# ifndef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ MOZ_ASSERT(__atomic_always_lock_free(sizeof(int8_t), 0));
++ MOZ_ASSERT(__atomic_always_lock_free(sizeof(int16_t), 0));
++ MOZ_ASSERT(__atomic_always_lock_free(sizeof(int32_t), 0));
++# if defined(__LP64__)
++ MOZ_ASSERT(__atomic_always_lock_free(sizeof(int64_t), 0));
++# endif
++ return true;
++# else
++ return false;
++# endif
++}
++
++inline void
++js::jit::AtomicOperations::fenceSeqCst()
++{
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ __sync_synchronize();
++# else
++ __atomic_thread_fence(__ATOMIC_SEQ_CST);
++# endif
++}
++
++template<typename T>
++inline T
++js::jit::AtomicOperations::loadSeqCst(T* addr)
++{
++ MOZ_ASSERT(sizeof(T) < 8 || isLockfree8());
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ __sync_synchronize();
++ T v = *addr;
++ __sync_synchronize();
++# else
++ T v;
++ __atomic_load(addr, &v, __ATOMIC_SEQ_CST);
++# endif
++ return v;
++}
++
++template<typename T>
++inline void
++js::jit::AtomicOperations::storeSeqCst(T* addr, T val)
++{
++ MOZ_ASSERT(sizeof(T) < 8 || isLockfree8());
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ __sync_synchronize();
++ *addr = val;
++ __sync_synchronize();
++# else
++ __atomic_store(addr, &val, __ATOMIC_SEQ_CST);
++# endif
++}
++
++template<typename T>
++inline T
++js::jit::AtomicOperations::compareExchangeSeqCst(T* addr, T oldval, T newval)
++{
++ MOZ_ASSERT(sizeof(T) < 8 || isLockfree8());
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ return __sync_val_compare_and_swap(addr, oldval, newval);
++# else
++ __atomic_compare_exchange(addr, &oldval, &newval, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
++ return oldval;
++# endif
++}
++
++template<typename T>
++inline T
++js::jit::AtomicOperations::fetchAddSeqCst(T* addr, T val)
++{
++#if !defined( __LP64__)
++ static_assert(sizeof(T) <= 4, "not available for 8-byte values yet");
++#endif
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ return __sync_fetch_and_add(addr, val);
++# else
++ return __atomic_fetch_add(addr, val, __ATOMIC_SEQ_CST);
++# endif
++}
++
++template<typename T>
++inline T
++js::jit::AtomicOperations::fetchSubSeqCst(T* addr, T val)
++{
++#if !defined( __LP64__)
++ static_assert(sizeof(T) <= 4, "not available for 8-byte values yet");
++#endif
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ return __sync_fetch_and_sub(addr, val);
++# else
++ return __atomic_fetch_sub(addr, val, __ATOMIC_SEQ_CST);
++# endif
++}
++
++template<typename T>
++inline T
++js::jit::AtomicOperations::fetchAndSeqCst(T* addr, T val)
++{
++#if !defined( __LP64__)
++ static_assert(sizeof(T) <= 4, "not available for 8-byte values yet");
++#endif
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ return __sync_fetch_and_and(addr, val);
++# else
++ return __atomic_fetch_and(addr, val, __ATOMIC_SEQ_CST);
++# endif
++}
++
++template<typename T>
++inline T
++js::jit::AtomicOperations::fetchOrSeqCst(T* addr, T val)
++{
++#if !defined( __LP64__)
++ static_assert(sizeof(T) <= 4, "not available for 8-byte values yet");
++#endif
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ return __sync_fetch_and_or(addr, val);
++# else
++ return __atomic_fetch_or(addr, val, __ATOMIC_SEQ_CST);
++# endif
++}
++
++template<typename T>
++inline T
++js::jit::AtomicOperations::fetchXorSeqCst(T* addr, T val)
++{
++#if !defined( __LP64__)
++ static_assert(sizeof(T) <= 4, "not available for 8-byte values yet");
++#endif
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ return __sync_fetch_and_xor(addr, val);
++# else
++ return __atomic_fetch_xor(addr, val, __ATOMIC_SEQ_CST);
++# endif
++}
++
++template<typename T>
++inline T
++js::jit::AtomicOperations::loadSafeWhenRacy(T* addr)
++{
++ return *addr; // FIXME (1208663): not yet safe
++}
++
++template<typename T>
++inline void
++js::jit::AtomicOperations::storeSafeWhenRacy(T* addr, T val)
++{
++ *addr = val; // FIXME (1208663): not yet safe
++}
++
++inline void
++js::jit::AtomicOperations::memcpySafeWhenRacy(void* dest, const void* src, size_t nbytes)
++{
++ ::memcpy(dest, src, nbytes); // FIXME (1208663): not yet safe
++}
++
++inline void
++js::jit::AtomicOperations::memmoveSafeWhenRacy(void* dest, const void* src, size_t nbytes)
++{
++ ::memmove(dest, src, nbytes); // FIXME (1208663): not yet safe
++}
++
++template<typename T>
++inline T
++js::jit::AtomicOperations::exchangeSeqCst(T* addr, T val)
++{
++ MOZ_ASSERT(sizeof(T) < 8 || isLockfree8());
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ T v;
++ __sync_synchronize();
++ do {
++ v = *addr;
++ } while (__sync_val_compare_and_swap(addr, v, val) != v);
++ return v;
++# else
++ T v;
++ __atomic_exchange(addr, &val, &v, __ATOMIC_SEQ_CST);
++ return v;
++# endif
++}
++
++template<size_t nbytes>
++inline void
++js::jit::RegionLock::acquire(void* addr)
++{
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ while (!__sync_bool_compare_and_swap(&spinlock, 0, 1))
++ ;
++# else
++ uint32_t zero = 0;
++ uint32_t one = 1;
++ while (!__atomic_compare_exchange(&spinlock, &zero, &one, false, __ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE)) {
++ zero = 0;
++ continue;
++ }
++# endif
++}
++
++template<size_t nbytes>
++inline void
++js::jit::RegionLock::release(void* addr)
++{
++ MOZ_ASSERT(AtomicOperations::loadSeqCst(&spinlock) == 1, "releasing unlocked region lock");
++# ifdef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++ __sync_sub_and_fetch(&spinlock, 1);
++# else
++ uint32_t zero = 0;
++ __atomic_store(&spinlock, &zero, __ATOMIC_SEQ_CST);
++# endif
++}
++
++# undef ATOMICS_IMPLEMENTED_WITH_SYNC_INTRINSICS
++
++#elif defined(ENABLE_SHARED_ARRAY_BUFFER)
++
++# error "Either disable JS shared memory, use GCC or Clang, or add code here"
++
++#endif
++
++#endif // jit_sparc_AtomicOperations_sparc_h
diff --git a/firefox-webrtc/patches/patch-js_src_jsdate.cpp b/firefox-webrtc/patches/patch-js_src_jsdate.cpp
new file mode 100644
index 0000000..438bd10
--- /dev/null
+++ b/firefox-webrtc/patches/patch-js_src_jsdate.cpp
@@ -0,0 +1,17 @@
+$NetBSD: patch-js_src_jsdate.cpp,v 1.4 2016/06/16 12:08:21 ryoon Exp $
+
+* For NetBSD
+
+--- js/src/jsdate.cpp.orig 2016-02-25 23:02:04.000000000 +0000
++++ js/src/jsdate.cpp
+@@ -2672,8 +2672,8 @@ ToLocaleFormatHelper(JSContext* cx, Hand
+ if (strcmp(format, "%x") == 0 && result_len >= 6 &&
+ /* Format %x means use OS settings, which may have 2-digit yr, so
+ hack end of 3/11/22 or 11.03.22 or 11Mar22 to use 4-digit yr...*/
+- !isdigit(buf[result_len - 3]) &&
+- isdigit(buf[result_len - 2]) && isdigit(buf[result_len - 1]) &&
++ !isdigit(((unsigned char)buf[result_len - 3])) &&
++ isdigit(((unsigned char)buf[result_len - 2])) && isdigit(((unsigned char)buf[result_len - 1])) &&
+ /* ...but not if starts with 4-digit year, like 2022/3/11. */
+ !(isdigit(buf[0]) && isdigit(buf[1]) &&
+ isdigit(buf[2]) && isdigit(buf[3]))) {
diff --git a/firefox-webrtc/patches/patch-js_src_jskwgen.cpp b/firefox-webrtc/patches/patch-js_src_jskwgen.cpp
new file mode 100644
index 0000000..c762095
--- /dev/null
+++ b/firefox-webrtc/patches/patch-js_src_jskwgen.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-js_src_jskwgen.cpp,v 1.1 2015/02/16 16:16:17 bad Exp $
+
+--- js/src/jskwgen.cpp.orig 2015-01-23 06:00:01.000000000 +0000
++++ js/src/jskwgen.cpp 2015-02-05 11:42:30.000000000 +0000
+@@ -181,7 +181,7 @@
+ *s++ = '\\';
+ break;
+ default:
+- if (!isprint(c)) {
++ if (!isprint(((unsigned char)c))) {
+ *s++ = '\\';
+ *s++ = (char)('0' + (0x3 & (((unsigned char)c) >> 6)));
+ *s++ = (char)('0' + (0x7 & (((unsigned char)c) >> 3)));
diff --git a/firefox-webrtc/patches/patch-js_xpconnect_src_XPCConvert.cpp b/firefox-webrtc/patches/patch-js_xpconnect_src_XPCConvert.cpp
new file mode 100644
index 0000000..67ca9a8
--- /dev/null
+++ b/firefox-webrtc/patches/patch-js_xpconnect_src_XPCConvert.cpp
@@ -0,0 +1,16 @@
+$NetBSD: patch-js_xpconnect_src_XPCConvert.cpp,v 1.1 2015/03/31 10:59:43 martin Exp $
+
+Suggested workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1147837
+Avoids a crash on big endian 64 bit architectures.
+
+--- js/xpconnect/src/XPCConvert.cpp.orig 2015-03-21 04:42:37.000000000 +0100
++++ js/xpconnect/src/XPCConvert.cpp 2015-03-30 13:49:16.000000000 +0200
+@@ -134,7 +134,7 @@
+ d.setNumber(*static_cast<const float*>(s));
+ return true;
+ case nsXPTType::T_DOUBLE:
+- d.setNumber(*static_cast<const double*>(s));
++ d.setNumber(CanonicalizeNaN(*static_cast<const double*>(s)));
+ return true;
+ case nsXPTType::T_BOOL :
+ d.setBoolean(*static_cast<const bool*>(s));
diff --git a/firefox-webrtc/patches/patch-js_xpconnect_src_xpcprivate.h b/firefox-webrtc/patches/patch-js_xpconnect_src_xpcprivate.h
new file mode 100644
index 0000000..f2fd33d
--- /dev/null
+++ b/firefox-webrtc/patches/patch-js_xpconnect_src_xpcprivate.h
@@ -0,0 +1,17 @@
+$NetBSD: patch-js_xpconnect_src_xpcprivate.h,v 1.2 2015/01/30 07:32:24 pho Exp $
+
+From commit log 1.1:
+ Instantiate WeakMapPtr explicitly to get the right visibility with
+ clang.
+
+--- js/xpconnect/src/xpcprivate.h.orig 2015-01-23 06:00:06.000000000 +0000
++++ js/xpconnect/src/xpcprivate.h
+@@ -1016,6 +1016,8 @@ static inline bool IS_PROTO_CLASS(const
+ /***************************************************************************/
+ // XPCWrappedNativeScope is one-to-one with a JS global object.
+
++extern template class JS_PUBLIC_API(JS::WeakMapPtr)<JSObject*, JSObject*>;
++
+ class nsIAddonInterposition;
+ class nsXPCComponentsBase;
+ class XPCWrappedNativeScope : public PRCList
diff --git a/firefox-webrtc/patches/patch-media_libcubeb_src_cubeb.c b/firefox-webrtc/patches/patch-media_libcubeb_src_cubeb.c
new file mode 100644
index 0000000..c15fd57
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libcubeb_src_cubeb.c
@@ -0,0 +1,26 @@
+$NetBSD: patch-media_libcubeb_src_cubeb.c,v 1.4 2016/06/16 12:08:21 ryoon Exp $
+
+* Support OSS audio
+
+--- media/libcubeb/src/cubeb.c.orig 2016-04-15 16:57:46.000000000 +0000
++++ media/libcubeb/src/cubeb.c
+@@ -60,6 +60,9 @@ int audiotrack_init(cubeb ** context, ch
+ #if defined(USE_KAI)
+ int kai_init(cubeb ** context, char const * context_name);
+ #endif
++#if defined(USE_OSS)
++int oss_init(cubeb ** context, char const * context_name);
++#endif
+
+
+ int
+@@ -152,6 +155,9 @@ cubeb_init(cubeb ** context, char const
+ #if defined(USE_KAI)
+ kai_init,
+ #endif
++#if defined(USE_OSS)
++ oss_init,
++#endif
+ };
+ int i;
+
diff --git a/firefox-webrtc/patches/patch-media_libcubeb_src_cubeb__alsa.c b/firefox-webrtc/patches/patch-media_libcubeb_src_cubeb__alsa.c
new file mode 100644
index 0000000..51884ab
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libcubeb_src_cubeb__alsa.c
@@ -0,0 +1,677 @@
+$NetBSD: patch-media_libcubeb_src_cubeb__alsa.c,v 1.15 2016/06/16 12:08:21 ryoon Exp $
+
+* Support alsa audio under NetBSD
+
+--- media/libcubeb/src/cubeb_alsa.c.orig 2016-04-15 16:57:46.000000000 +0000
++++ media/libcubeb/src/cubeb_alsa.c
+@@ -7,12 +7,18 @@
+ #undef NDEBUG
+ #define _DEFAULT_SOURCE
+ #define _BSD_SOURCE
++#if defined(__NetBSD__)
++#define _NETBSD_SOURCE
++#endif
+ #define _XOPEN_SOURCE 500
+ #include <pthread.h>
+ #include <sys/time.h>
+ #include <assert.h>
+ #include <limits.h>
++#include <dlfcn.h>
+ #include <poll.h>
++#include <stdlib.h>
++#include <stdio.h>
+ #include <unistd.h>
+ #include <alsa/asoundlib.h>
+ #include "cubeb/cubeb.h"
+@@ -25,6 +31,51 @@
+
+ #define ALSA_PA_PLUGIN "ALSA <-> PulseAudio PCM I/O Plugin"
+
++#ifdef DISABLE_LIBASOUND_DLOPEN
++#define WRAP(x) x
++#else
++#define WRAP(x) cubeb_##x
++#define MAKE_TYPEDEF(x) static typeof(x) * cubeb_##x
++MAKE_TYPEDEF(snd_config);
++MAKE_TYPEDEF(snd_config_add);
++MAKE_TYPEDEF(snd_config_copy);
++MAKE_TYPEDEF(snd_config_delete);
++MAKE_TYPEDEF(snd_config_get_id);
++MAKE_TYPEDEF(snd_config_get_string);
++MAKE_TYPEDEF(snd_config_imake_integer);
++MAKE_TYPEDEF(snd_config_search);
++MAKE_TYPEDEF(snd_config_search_definition);
++MAKE_TYPEDEF(snd_lib_error_set_handler);
++MAKE_TYPEDEF(snd_pcm_avail_update);
++MAKE_TYPEDEF(snd_pcm_close);
++MAKE_TYPEDEF(snd_pcm_delay);
++MAKE_TYPEDEF(snd_pcm_drain);
++MAKE_TYPEDEF(snd_pcm_forward);
++MAKE_TYPEDEF(snd_pcm_frames_to_bytes);
++MAKE_TYPEDEF(snd_pcm_get_params);
++/* snd_pcm_hw_params_alloca is actually a macro */
++/* MAKE_TYPEDEF(snd_pcm_hw_params_alloca); */
++MAKE_TYPEDEF(snd_pcm_hw_params_sizeof);
++#define snd_pcm_hw_params_sizeof cubeb_snd_pcm_hw_params_sizeof
++MAKE_TYPEDEF(snd_pcm_hw_params_any);
++MAKE_TYPEDEF(snd_pcm_hw_params_get_channels_max);
++MAKE_TYPEDEF(snd_pcm_hw_params_get_rate);
++MAKE_TYPEDEF(snd_pcm_hw_params_set_rate_near);
++MAKE_TYPEDEF(snd_pcm_nonblock);
++MAKE_TYPEDEF(snd_pcm_open);
++MAKE_TYPEDEF(snd_pcm_open_lconf);
++MAKE_TYPEDEF(snd_pcm_pause);
++MAKE_TYPEDEF(snd_pcm_poll_descriptors);
++MAKE_TYPEDEF(snd_pcm_poll_descriptors_count);
++MAKE_TYPEDEF(snd_pcm_poll_descriptors_revents);
++MAKE_TYPEDEF(snd_pcm_recover);
++MAKE_TYPEDEF(snd_pcm_set_params);
++MAKE_TYPEDEF(snd_pcm_state);
++MAKE_TYPEDEF(snd_pcm_writei);
++
++#undef MAKE_TYPEDEF
++#endif
++
+ /* ALSA is not thread-safe. snd_pcm_t instances are individually protected
+ by the owning cubeb_stream's mutex. snd_pcm_t creation and destruction
+ is not thread-safe until ALSA 1.0.24 (see alsa-lib.git commit 91c9c8f1),
+@@ -65,6 +116,8 @@ struct cubeb {
+ workaround is not required. */
+ snd_config_t * local_config;
+ int is_pa;
++
++ void * libasound;
+ };
+
+ enum stream_state {
+@@ -257,32 +310,35 @@ alsa_refill_stream(cubeb_stream * stm)
+ long got;
+ void * p;
+ int draining;
++ unsigned pipefailures, againfailures;
+
+ draining = 0;
+
+ pthread_mutex_lock(&stm->mutex);
+
+- r = snd_pcm_poll_descriptors_revents(stm->pcm, stm->fds, stm->nfds, &revents);
+- if (r < 0 || revents != POLLOUT) {
+- /* This should be a stream error; it makes no sense for poll(2) to wake
+- for this stream and then have the stream report that it's not ready.
+- Unfortunately, this does happen, so just bail out and try again. */
+- pthread_mutex_unlock(&stm->mutex);
+- return RUNNING;
+- }
+-
+- avail = snd_pcm_avail_update(stm->pcm);
+- if (avail == -EPIPE) {
+- snd_pcm_recover(stm->pcm, avail, 1);
+- avail = snd_pcm_avail_update(stm->pcm);
+- }
++ for (pipefailures = 0;;) {
++ r = WRAP(snd_pcm_poll_descriptors_revents)(stm->pcm, stm->fds, stm->nfds, &revents);
++ if (r < 0 || revents != POLLOUT ||
++ (avail = WRAP(snd_pcm_avail_update)(stm->pcm)) == 0) {
++ /* This should be a stream error; it makes no sense for poll(2) to wake
++ for this stream and then have the stream report that it's not ready.
++ Unfortunately, this does happen, so just bail out and try again. */
++ pthread_mutex_unlock(&stm->mutex);
++ return RUNNING;
++ }
+
+- /* Failed to recover from an xrun, this stream must be broken. */
+- if (avail < 0) {
+- pthread_mutex_unlock(&stm->mutex);
+- stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
+- return ERROR;
++ if (avail > 0)
++ break;
++ if (pipefailures++ > 11) {
++ fprintf(stderr, "%s: repeated failures from snd_pcm_avail_update, "
++ "giving up\n", __func__);
++ pthread_mutex_unlock(&stm->mutex);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ return ERROR;
++ }
++ WRAP(snd_pcm_recover)(stm->pcm, avail, 1);
+ }
++ pipefailures = againfailures = 0;
+
+ /* This should never happen. */
+ if ((unsigned int) avail > stm->buffer_size) {
+@@ -293,8 +349,8 @@ alsa_refill_stream(cubeb_stream * stm)
+ available to write. If avail is still zero here, the stream must be in
+ a funky state, so recover and try again. */
+ if (avail == 0) {
+- snd_pcm_recover(stm->pcm, -EPIPE, 1);
+- avail = snd_pcm_avail_update(stm->pcm);
++ WRAP(snd_pcm_recover)(stm->pcm, -EPIPE, 1);
++ avail = WRAP(snd_pcm_avail_update)(stm->pcm);
+ if (avail <= 0) {
+ pthread_mutex_unlock(&stm->mutex);
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
+@@ -302,7 +358,7 @@ alsa_refill_stream(cubeb_stream * stm)
+ }
+ }
+
+- p = calloc(1, snd_pcm_frames_to_bytes(stm->pcm, avail));
++ p = calloc(1, WRAP(snd_pcm_frames_to_bytes)(stm->pcm, avail));
+ assert(p);
+
+ pthread_mutex_unlock(&stm->mutex);
+@@ -311,10 +367,11 @@ alsa_refill_stream(cubeb_stream * stm)
+ if (got < 0) {
+ pthread_mutex_unlock(&stm->mutex);
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ free(p);
+ return ERROR;
+ }
+ if (got > 0) {
+- snd_pcm_sframes_t wrote;
++ snd_pcm_sframes_t wrote, towrite = got;
+
+ if (stm->params.format == CUBEB_SAMPLE_FLOAT32NE) {
+ float * b = (float *) p;
+@@ -327,14 +384,66 @@ alsa_refill_stream(cubeb_stream * stm)
+ b[i] *= stm->volume;
+ }
+ }
+- wrote = snd_pcm_writei(stm->pcm, p, got);
+- if (wrote == -EPIPE) {
+- snd_pcm_recover(stm->pcm, wrote, 1);
+- wrote = snd_pcm_writei(stm->pcm, p, got);
+- }
+- assert(wrote >= 0 && wrote == got);
+- stm->write_position += wrote;
+- gettimeofday(&stm->last_activity, NULL);
++ for (;;) {
++ wrote = WRAP(snd_pcm_writei)(stm->pcm, p,
++ towrite > avail ? avail : towrite);
++ switch(wrote) {
++ case -EPIPE:
++ if (pipefailures++ > 3) {
++ fprintf(stderr, "%s: Too many underflows, giving up\n", __func__);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ pthread_mutex_unlock(&stm->mutex);
++ free(p);
++ return ERROR;
++ }
++ WRAP(snd_pcm_recover)(stm->pcm, wrote, 1);
++ continue;
++ case -EAGAIN:
++ if (againfailures++ > 3) {
++ fprintf(stderr, "%s: Too many -EAGAIN errors from snd_pcm_writei, "
++ "giving up\n", __func__);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ pthread_mutex_unlock(&stm->mutex);
++ free(p);
++ return ERROR;
++ }
++ continue;
++#if __linux__
++ case -EBADFD:
++#else
++ case -EBADF:
++#endif
++ fprintf(stderr, "%s: snc_pcm_writei returned -%s, giving up\n",
++ __func__, "EBADFD");
++ free(p);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ pthread_mutex_unlock(&stm->mutex);
++ return ERROR;
++ }
++ if (wrote < 0) {
++ fprintf(stderr, "%s: snc_pcm_writei returned unexpected error %lld, "
++ "giving up\n", __func__, (long long)wrote);
++ free(p);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ pthread_mutex_unlock(&stm->mutex);
++ return ERROR;
++ }
++ pipefailures = againfailures = 0;
++ stm->write_position += wrote;
++ gettimeofday(&stm->last_activity, NULL);
++ if (wrote > towrite) {
++ fprintf(stderr, "%s: snc_pcm_writei wrote %lld frames, which was more "
++ "than we requested (%lld). This should not happen, giving up\n",
++ __func__, (long long)wrote, (long long)towrite);
++ free(p);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ pthread_mutex_unlock(&stm->mutex);
++ return ERROR;
++ }
++ if (towrite == wrote)
++ break;
++ towrite -= wrote;
++ }
+ }
+ if (got != avail) {
+ long buffer_fill = stm->buffer_size - (avail - got);
+@@ -342,7 +451,7 @@ alsa_refill_stream(cubeb_stream * stm)
+
+ /* Fill the remaining buffer with silence to guarantee one full period
+ has been written. */
+- snd_pcm_writei(stm->pcm, (char *) p + got, avail - got);
++ WRAP(snd_pcm_writei)(stm->pcm, (char *) p + got, avail - got);
+
+ set_timeout(&stm->drain_timeout, buffer_time * 1000);
+
+@@ -453,26 +562,26 @@ get_slave_pcm_node(snd_config_t * lconf,
+
+ slave_def = NULL;
+
+- r = snd_config_search(root_pcm, "slave", &slave_pcm);
++ r = WRAP(snd_config_search)(root_pcm, "slave", &slave_pcm);
+ if (r < 0) {
+ return NULL;
+ }
+
+- r = snd_config_get_string(slave_pcm, &string);
++ r = WRAP(snd_config_get_string)(slave_pcm, &string);
+ if (r >= 0) {
+- r = snd_config_search_definition(lconf, "pcm_slave", string, &slave_def);
++ r = WRAP(snd_config_search_definition)(lconf, "pcm_slave", string, &slave_def);
+ if (r < 0) {
+ return NULL;
+ }
+ }
+
+ do {
+- r = snd_config_search(slave_def ? slave_def : slave_pcm, "pcm", &pcm);
++ r = WRAP(snd_config_search)(slave_def ? slave_def : slave_pcm, "pcm", &pcm);
+ if (r < 0) {
+ break;
+ }
+
+- r = snd_config_get_string(slave_def ? slave_def : slave_pcm, &string);
++ r = WRAP(snd_config_get_string)(slave_def ? slave_def : slave_pcm, &string);
+ if (r < 0) {
+ break;
+ }
+@@ -481,7 +590,7 @@ get_slave_pcm_node(snd_config_t * lconf,
+ if (r < 0 || r > (int) sizeof(node_name)) {
+ break;
+ }
+- r = snd_config_search(lconf, node_name, &pcm);
++ r = WRAP(snd_config_search)(lconf, node_name, &pcm);
+ if (r < 0) {
+ break;
+ }
+@@ -490,7 +599,7 @@ get_slave_pcm_node(snd_config_t * lconf,
+ } while (0);
+
+ if (slave_def) {
+- snd_config_delete(slave_def);
++ WRAP(snd_config_delete)(slave_def);
+ }
+
+ return NULL;
+@@ -513,22 +622,22 @@ init_local_config_with_workaround(char c
+
+ lconf = NULL;
+
+- if (snd_config == NULL) {
++ if (*WRAP(snd_config) == NULL) {
+ return NULL;
+ }
+
+- r = snd_config_copy(&lconf, snd_config);
++ r = WRAP(snd_config_copy)(&lconf, *WRAP(snd_config));
+ if (r < 0) {
+ return NULL;
+ }
+
+ do {
+- r = snd_config_search_definition(lconf, "pcm", pcm_name, &pcm_node);
++ r = WRAP(snd_config_search_definition)(lconf, "pcm", pcm_name, &pcm_node);
+ if (r < 0) {
+ break;
+ }
+
+- r = snd_config_get_id(pcm_node, &string);
++ r = WRAP(snd_config_get_id)(pcm_node, &string);
+ if (r < 0) {
+ break;
+ }
+@@ -537,7 +646,7 @@ init_local_config_with_workaround(char c
+ if (r < 0 || r > (int) sizeof(node_name)) {
+ break;
+ }
+- r = snd_config_search(lconf, node_name, &pcm_node);
++ r = WRAP(snd_config_search)(lconf, node_name, &pcm_node);
+ if (r < 0) {
+ break;
+ }
+@@ -548,12 +657,12 @@ init_local_config_with_workaround(char c
+ }
+
+ /* Fetch the PCM node's type, and bail out if it's not the PulseAudio plugin. */
+- r = snd_config_search(pcm_node, "type", &node);
++ r = WRAP(snd_config_search)(pcm_node, "type", &node);
+ if (r < 0) {
+ break;
+ }
+
+- r = snd_config_get_string(node, &string);
++ r = WRAP(snd_config_get_string)(node, &string);
+ if (r < 0) {
+ break;
+ }
+@@ -564,18 +673,18 @@ init_local_config_with_workaround(char c
+
+ /* Don't clobber an explicit existing handle_underrun value, set it only
+ if it doesn't already exist. */
+- r = snd_config_search(pcm_node, "handle_underrun", &node);
++ r = WRAP(snd_config_search)(pcm_node, "handle_underrun", &node);
+ if (r != -ENOENT) {
+ break;
+ }
+
+ /* Disable pcm_pulse's asynchronous underrun handling. */
+- r = snd_config_imake_integer(&node, "handle_underrun", 0);
++ r = WRAP(snd_config_imake_integer)(&node, "handle_underrun", 0);
+ if (r < 0) {
+ break;
+ }
+
+- r = snd_config_add(pcm_node, node);
++ r = WRAP(snd_config_add)(pcm_node, node);
+ if (r < 0) {
+ break;
+ }
+@@ -583,7 +692,7 @@ init_local_config_with_workaround(char c
+ return lconf;
+ } while (0);
+
+- snd_config_delete(lconf);
++ WRAP(snd_config_delete)(lconf);
+
+ return NULL;
+ }
+@@ -595,9 +704,9 @@ alsa_locked_pcm_open(snd_pcm_t ** pcm, s
+
+ pthread_mutex_lock(&cubeb_alsa_mutex);
+ if (local_config) {
+- r = snd_pcm_open_lconf(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK, local_config);
++ r = WRAP(snd_pcm_open_lconf)(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK, local_config);
+ } else {
+- r = snd_pcm_open(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK);
++ r = WRAP(snd_pcm_open)(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK);
+ }
+ pthread_mutex_unlock(&cubeb_alsa_mutex);
+
+@@ -610,7 +719,7 @@ alsa_locked_pcm_close(snd_pcm_t * pcm)
+ int r;
+
+ pthread_mutex_lock(&cubeb_alsa_mutex);
+- r = snd_pcm_close(pcm);
++ r = WRAP(snd_pcm_close)(pcm);
+ pthread_mutex_unlock(&cubeb_alsa_mutex);
+
+ return r;
+@@ -667,12 +776,65 @@ alsa_init(cubeb ** context, char const *
+ pthread_attr_t attr;
+ snd_pcm_t * dummy;
+
++ void * libasound = NULL;
++
++#ifndef DISABLE_LIBASOUND_DLOPEN
++ libasound = dlopen("libasound.so", RTLD_LAZY);
++ if (!libasound) {
++ return CUBEB_ERROR;
++ }
++
++#define LOAD(x) do { \
++ cubeb_##x = dlsym(libasound, #x); \
++ if (!cubeb_##x) { \
++ dlclose(libasound); \
++ return CUBEB_ERROR; \
++ } \
++ } while(0)
++
++ LOAD(snd_config);
++ LOAD(snd_config_add);
++ LOAD(snd_config_copy);
++ LOAD(snd_config_delete);
++ LOAD(snd_config_get_id);
++ LOAD(snd_config_get_string);
++ LOAD(snd_config_imake_integer);
++ LOAD(snd_config_search);
++ LOAD(snd_config_search_definition);
++ LOAD(snd_lib_error_set_handler);
++ LOAD(snd_pcm_avail_update);
++ LOAD(snd_pcm_close);
++ LOAD(snd_pcm_delay);
++ LOAD(snd_pcm_drain);
++ LOAD(snd_pcm_frames_to_bytes);
++ LOAD(snd_pcm_get_params);
++ /* snd_pcm_hw_params_alloca is actually a macro */
++ /* LOAD(snd_pcm_hw_params_alloca); */
++ LOAD(snd_pcm_hw_params_sizeof);
++ LOAD(snd_pcm_hw_params_any);
++ LOAD(snd_pcm_hw_params_get_channels_max);
++ LOAD(snd_pcm_hw_params_get_rate);
++ LOAD(snd_pcm_hw_params_set_rate_near);
++ LOAD(snd_pcm_nonblock);
++ LOAD(snd_pcm_open);
++ LOAD(snd_pcm_open_lconf);
++ LOAD(snd_pcm_pause);
++ LOAD(snd_pcm_poll_descriptors);
++ LOAD(snd_pcm_poll_descriptors_count);
++ LOAD(snd_pcm_poll_descriptors_revents);
++ LOAD(snd_pcm_recover);
++ LOAD(snd_pcm_set_params);
++ LOAD(snd_pcm_state);
++ LOAD(snd_pcm_writei);
++
++#undef LOAD
++#endif
+ assert(context);
+ *context = NULL;
+
+ pthread_mutex_lock(&cubeb_alsa_mutex);
+ if (!cubeb_alsa_error_handler_set) {
+- snd_lib_error_set_handler(silent_error_handler);
++ WRAP(snd_lib_error_set_handler)(silent_error_handler);
+ cubeb_alsa_error_handler_set = 1;
+ }
+ pthread_mutex_unlock(&cubeb_alsa_mutex);
+@@ -680,6 +842,8 @@ alsa_init(cubeb ** context, char const *
+ ctx = calloc(1, sizeof(*ctx));
+ assert(ctx);
+
++ ctx->libasound = libasound;
++
+ ctx->ops = &alsa_ops;
+
+ r = pthread_mutex_init(&ctx->mutex, NULL);
+@@ -729,7 +893,7 @@ alsa_init(cubeb ** context, char const *
+ config fails with EINVAL, the PA PCM is too old for this workaround. */
+ if (r == -EINVAL) {
+ pthread_mutex_lock(&cubeb_alsa_mutex);
+- snd_config_delete(ctx->local_config);
++ WRAP(snd_config_delete)(ctx->local_config);
+ pthread_mutex_unlock(&cubeb_alsa_mutex);
+ ctx->local_config = NULL;
+ } else if (r >= 0) {
+@@ -768,9 +932,13 @@ alsa_destroy(cubeb * ctx)
+ pthread_mutex_destroy(&ctx->mutex);
+ free(ctx->fds);
+
++ if (ctx->libasound) {
++ dlclose(ctx->libasound);
++ }
++
+ if (ctx->local_config) {
+ pthread_mutex_lock(&cubeb_alsa_mutex);
+- snd_config_delete(ctx->local_config);
++ WRAP(snd_config_delete)(ctx->local_config);
+ pthread_mutex_unlock(&cubeb_alsa_mutex);
+ }
+
+@@ -849,7 +1017,7 @@ alsa_stream_init(cubeb * ctx, cubeb_stre
+ return CUBEB_ERROR;
+ }
+
+- r = snd_pcm_nonblock(stm->pcm, 1);
++ r = WRAP(snd_pcm_nonblock)(stm->pcm, 1);
+ assert(r == 0);
+
+ /* Ugly hack: the PA ALSA plugin allows buffer configurations that can't
+@@ -859,23 +1027,23 @@ alsa_stream_init(cubeb * ctx, cubeb_stre
+ latency = latency < 500 ? 500 : latency;
+ }
+
+- r = snd_pcm_set_params(stm->pcm, format, SND_PCM_ACCESS_RW_INTERLEAVED,
+- stm->params.channels, stm->params.rate, 1,
+- latency * 1000);
++ r = WRAP(snd_pcm_set_params)(stm->pcm, format, SND_PCM_ACCESS_RW_INTERLEAVED,
++ stm->params.channels, stm->params.rate, 1,
++ latency * 1000);
+ if (r < 0) {
+ alsa_stream_destroy(stm);
+ return CUBEB_ERROR_INVALID_FORMAT;
+ }
+
+- r = snd_pcm_get_params(stm->pcm, &stm->buffer_size, &period_size);
++ r = WRAP(snd_pcm_get_params)(stm->pcm, &stm->buffer_size, &stm->period_size);
+ assert(r == 0);
+
+- stm->nfds = snd_pcm_poll_descriptors_count(stm->pcm);
++ stm->nfds = WRAP(snd_pcm_poll_descriptors_count)(stm->pcm);
+ assert(stm->nfds > 0);
+
+ stm->saved_fds = calloc(stm->nfds, sizeof(struct pollfd));
+ assert(stm->saved_fds);
+- r = snd_pcm_poll_descriptors(stm->pcm, stm->saved_fds, stm->nfds);
++ r = WRAP(snd_pcm_poll_descriptors)(stm->pcm, stm->saved_fds, stm->nfds);
+ assert((nfds_t) r == stm->nfds);
+
+ r = pthread_cond_init(&stm->cond, NULL);
+@@ -906,7 +1074,7 @@ alsa_stream_destroy(cubeb_stream * stm)
+ pthread_mutex_lock(&stm->mutex);
+ if (stm->pcm) {
+ if (stm->state == DRAINING) {
+- snd_pcm_drain(stm->pcm);
++ WRAP(snd_pcm_drain)(stm->pcm);
+ }
+ alsa_locked_pcm_close(stm->pcm);
+ stm->pcm = NULL;
+@@ -916,7 +1084,10 @@ alsa_stream_destroy(cubeb_stream * stm)
+ pthread_mutex_destroy(&stm->mutex);
+
+ r = pthread_cond_destroy(&stm->cond);
+- assert(r == 0);
++ if (r != 0) { /* XXX stopgap until someone figures out the real reason */
++ fprintf(stderr,"alsa_stream_destroy: pthread_cond_destroy failed: %s",
++ strerror(r));
++ }
+
+ alsa_unregister_stream(stm);
+
+@@ -948,12 +1119,12 @@ alsa_get_max_channel_count(cubeb * ctx,
+ return CUBEB_ERROR;
+ }
+
+- r = snd_pcm_hw_params_any(stm->pcm, hw_params);
++ r = WRAP(snd_pcm_hw_params_any)(stm->pcm, hw_params);
+ if (r < 0) {
+ return CUBEB_ERROR;
+ }
+
+- r = snd_pcm_hw_params_get_channels_max(hw_params, max_channels);
++ r = WRAP(snd_pcm_hw_params_get_channels_max)(hw_params, max_channels);
+ if (r < 0) {
+ return CUBEB_ERROR;
+ }
+@@ -973,34 +1144,34 @@ alsa_get_preferred_sample_rate(cubeb * c
+
+ /* get a pcm, disabling resampling, so we get a rate the
+ * hardware/dmix/pulse/etc. supports. */
+- r = snd_pcm_open(&pcm, CUBEB_ALSA_PCM_NAME, SND_PCM_STREAM_PLAYBACK | SND_PCM_NO_AUTO_RESAMPLE, 0);
++ r = WRAP(snd_pcm_open)(&pcm, CUBEB_ALSA_PCM_NAME, SND_PCM_STREAM_PLAYBACK | SND_PCM_NO_AUTO_RESAMPLE, 0);
+ if (r < 0) {
+ return CUBEB_ERROR;
+ }
+
+- r = snd_pcm_hw_params_any(pcm, hw_params);
++ r = WRAP(snd_pcm_hw_params_any)(pcm, hw_params);
+ if (r < 0) {
+- snd_pcm_close(pcm);
++ WRAP(snd_pcm_close)(pcm);
+ return CUBEB_ERROR;
+ }
+
+- r = snd_pcm_hw_params_get_rate(hw_params, rate, &dir);
++ r = WRAP(snd_pcm_hw_params_get_rate)(hw_params, rate, &dir);
+ if (r >= 0) {
+ /* There is a default rate: use it. */
+- snd_pcm_close(pcm);
++ WRAP(snd_pcm_close)(pcm);
+ return CUBEB_OK;
+ }
+
+ /* Use a common rate, alsa may adjust it based on hw/etc. capabilities. */
+ *rate = 44100;
+
+- r = snd_pcm_hw_params_set_rate_near(pcm, hw_params, rate, NULL);
++ r = WRAP(snd_pcm_hw_params_set_rate_near)(pcm, hw_params, rate, NULL);
+ if (r < 0) {
+- snd_pcm_close(pcm);
++ WRAP(snd_pcm_close)(pcm);
+ return CUBEB_ERROR;
+ }
+
+- snd_pcm_close(pcm);
++ WRAP(snd_pcm_close)(pcm);
+
+ return CUBEB_OK;
+ }
+@@ -1024,7 +1195,7 @@ alsa_stream_start(cubeb_stream * stm)
+ ctx = stm->context;
+
+ pthread_mutex_lock(&stm->mutex);
+- snd_pcm_pause(stm->pcm, 0);
++ WRAP(snd_pcm_pause)(stm->pcm, 0);
+ gettimeofday(&stm->last_activity, NULL);
+ pthread_mutex_unlock(&stm->mutex);
+
+@@ -1058,7 +1229,7 @@ alsa_stream_stop(cubeb_stream * stm)
+ pthread_mutex_unlock(&ctx->mutex);
+
+ pthread_mutex_lock(&stm->mutex);
+- snd_pcm_pause(stm->pcm, 1);
++ WRAP(snd_pcm_pause)(stm->pcm, 1);
+ pthread_mutex_unlock(&stm->mutex);
+
+ return CUBEB_OK;
+@@ -1074,14 +1245,17 @@ alsa_stream_get_position(cubeb_stream *
+ pthread_mutex_lock(&stm->mutex);
+
+ delay = -1;
+- if (snd_pcm_state(stm->pcm) != SND_PCM_STATE_RUNNING ||
+- snd_pcm_delay(stm->pcm, &delay) != 0) {
++ if (WRAP(snd_pcm_state)(stm->pcm) != SND_PCM_STATE_RUNNING ||
++ WRAP(snd_pcm_delay)(stm->pcm, &delay) != 0) {
+ *position = stm->last_position;
+ pthread_mutex_unlock(&stm->mutex);
+ return CUBEB_OK;
+ }
+
+- assert(delay >= 0);
++ if (delay < 0) {
++ WRAP(snd_pcm_forward)(stm->pcm, -delay);
++ delay = 0;
++ }
+
+ *position = 0;
+ if (stm->write_position >= (snd_pcm_uframes_t) delay) {
+@@ -1100,7 +1274,7 @@ alsa_stream_get_latency(cubeb_stream * s
+ snd_pcm_sframes_t delay;
+ /* This function returns the delay in frames until a frame written using
+ snd_pcm_writei is sent to the DAC. The DAC delay should be < 1ms anyways. */
+- if (snd_pcm_delay(stm->pcm, &delay)) {
++ if (WRAP(snd_pcm_delay)(stm->pcm, &delay)) {
+ return CUBEB_ERROR;
+ }
+
diff --git a/firefox-webrtc/patches/patch-media_libcubeb_src_cubeb__oss.c b/firefox-webrtc/patches/patch-media_libcubeb_src_cubeb__oss.c
new file mode 100644
index 0000000..f3981a9
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libcubeb_src_cubeb__oss.c
@@ -0,0 +1,419 @@
+$NetBSD: patch-media_libcubeb_src_cubeb__oss.c,v 1.5 2016/06/16 12:08:21 ryoon Exp $
+
+* Restore OSS audio support code
+
+--- media/libcubeb/src/cubeb_oss.c.orig 2016-05-15 03:58:16.955259529 +0000
++++ media/libcubeb/src/cubeb_oss.c
+@@ -0,0 +1,412 @@
++/*
++ * Copyright � 2014 Mozilla Foundation
++ *
++ * This program is made available under an ISC-style license. See the
++ * accompanying file LICENSE for details.
++ */
++#if defined(HAVE_SYS_SOUNDCARD_H)
++#include <sys/soundcard.h>
++#else
++#include <soundcard.h>
++#endif
++#include <unistd.h>
++#include <stdlib.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
++#include <sys/ioctl.h>
++#include <errno.h>
++#include <pthread.h>
++#include <stdio.h>
++#include <assert.h>
++
++#include "cubeb/cubeb.h"
++#include "cubeb-internal.h"
++
++#ifndef CUBEB_OSS_DEFAULT_OUTPUT
++#define CUBEB_OSS_DEFAULT_OUTPUT "/dev/dsp"
++#endif
++
++#define OSS_BUFFER_SIZE 1024
++
++struct cubeb {
++ struct cubeb_ops const * ops;
++};
++
++struct cubeb_stream {
++ cubeb * context;
++
++ cubeb_data_callback data_callback;
++ cubeb_state_callback state_callback;
++ void * user_ptr;
++ float volume;
++ float panning;
++
++ pthread_mutex_t state_mutex;
++ pthread_cond_t state_cond;
++
++ int running;
++ int stopped;
++ int floating;
++
++ /* These two vars are needed to support old versions of OSS */
++ unsigned int position_bytes;
++ unsigned int last_position_bytes;
++
++ uint64_t written_frags; /* The number of fragments written to /dev/dsp */
++ uint64_t missed_frags; /* fragments output with stopped stream */
++
++ cubeb_stream_params params;
++ int fd;
++ pthread_t th;
++};
++
++static struct cubeb_ops const oss_ops;
++
++int oss_init(cubeb ** context, char const * context_name)
++{
++ cubeb* ctx = (cubeb*)malloc(sizeof(cubeb));
++ ctx->ops = &oss_ops;
++ *context = ctx;
++ return CUBEB_OK;
++}
++
++static void oss_destroy(cubeb *ctx)
++{
++ free(ctx);
++}
++
++static char const * oss_get_backend_id(cubeb * context)
++{
++ static char oss_name[] = "oss";
++ return oss_name;
++}
++
++static int oss_get_max_channel_count(cubeb * ctx, uint32_t * max_channels)
++{
++ *max_channels = 2; /* Let's support only stereo for now */
++ return CUBEB_OK;
++}
++
++static int oss_get_min_latency(cubeb * context, cubeb_stream_params params,
++ uint32_t * latency_ms)
++{
++ /* 40ms is a big enough number to work ok */
++ *latency_ms = 40;
++ return CUBEB_OK;
++}
++
++static int oss_get_preferred_sample_rate(cubeb *context, uint32_t * rate)
++{
++ /* 48000 seems a prefered choice for most audio devices
++ * and a good choice for OSS */
++ *rate = 48000;
++ return CUBEB_OK;
++}
++
++static void run_state_callback(cubeb_stream *stream, cubeb_state state)
++{
++ if (stream->state_callback) {
++ stream->state_callback(stream, stream->user_ptr, state);
++ }
++}
++
++static long run_data_callback(cubeb_stream *stream, void *buffer, long nframes)
++{
++ long got = 0;
++ pthread_mutex_lock(&stream->state_mutex);
++ if (stream->data_callback && stream->running && !stream->stopped) {
++ pthread_mutex_unlock(&stream->state_mutex);
++ got = stream->data_callback(stream, stream->user_ptr, NULL, buffer, nframes);
++ } else {
++ pthread_mutex_unlock(&stream->state_mutex);
++ }
++ return got;
++}
++
++static void apply_volume(int16_t* buffer, unsigned int n,
++ float volume, float panning)
++{
++ float left = volume;
++ float right = volume;
++ unsigned int i;
++ int pan[2];
++ if (panning<0) {
++ right *= (1+panning);
++ } else {
++ left *= (1-panning);
++ }
++ pan[0] = 128.0*left;
++ pan[1] = 128.0*right;
++ for(i=0; i<n; i++){
++ buffer[i] = ((int)buffer[i])*pan[i%2]/128;
++ }
++}
++
++static void *writer(void *stm)
++{
++ cubeb_stream* stream = (cubeb_stream*)stm;
++ int16_t buffer[OSS_BUFFER_SIZE];
++ float f_buffer[OSS_BUFFER_SIZE];
++ int got;
++ unsigned long i;
++ while (stream->running) {
++ pthread_mutex_lock(&stream->state_mutex);
++ if (stream->stopped) {
++ pthread_mutex_unlock(&stream->state_mutex);
++ run_state_callback(stream, CUBEB_STATE_STOPPED);
++ pthread_mutex_lock(&stream->state_mutex);
++ while (stream->stopped) {
++ pthread_cond_wait(&stream->state_cond, &stream->state_mutex);
++ }
++ pthread_mutex_unlock(&stream->state_mutex);
++ run_state_callback(stream, CUBEB_STATE_STARTED);
++ continue;
++ }
++ pthread_mutex_unlock(&stream->state_mutex);
++ if (stream->floating) {
++ got = run_data_callback(stream, f_buffer,
++ OSS_BUFFER_SIZE/stream->params.channels);
++ for (i=0; i<((unsigned long)got)*stream->params.channels; i++) {
++ buffer[i] = f_buffer[i]*32767.0;
++ }
++ } else {
++ got = run_data_callback(stream, buffer,
++ OSS_BUFFER_SIZE/stream->params.channels);
++ }
++ apply_volume(buffer, got*stream->params.channels,
++ stream->volume, stream->panning);
++ if (got<0) {
++ run_state_callback(stream, CUBEB_STATE_ERROR);
++ break;
++ }
++ if (!got) {
++ run_state_callback(stream, CUBEB_STATE_DRAINED);
++ }
++ if (got) {
++ size_t i = 0;
++ size_t s = got*stream->params.channels*sizeof(int16_t);
++ while (i < s) {
++ ssize_t n = write(stream->fd, ((char*)buffer) + i, s - i);
++ if (n<=0) {
++ run_state_callback(stream, CUBEB_STATE_ERROR);
++ break;
++ }
++ i+=n;
++ }
++ stream->written_frags+=got;
++ }
++ }
++ return NULL;
++}
++
++static void oss_try_set_latency(cubeb_stream* stream, unsigned int latency)
++{
++ unsigned int latency_bytes, n_frag;
++ int frag;
++ /* fragment size of 1024 is a good choice with good chances to be accepted */
++ unsigned int frag_size=1024;
++ unsigned int frag_log=10; /* 2^frag_log = frag_size */
++ latency_bytes =
++ latency*stream->params.rate*stream->params.channels*sizeof(uint16_t)/1000;
++ n_frag = latency_bytes>>frag_log;
++ frag = (n_frag<<16) | frag_log;
++ /* Even if this fails we wish to continue, not checking for errors */
++ ioctl(stream->fd, SNDCTL_DSP_SETFRAGMENT, &frag);
++}
++
++static int oss_stream_init(cubeb * context, cubeb_stream ** stm,
++ char const * stream_name,
++ cubeb_devid input_device,
++ cubeb_stream_params * input_stream_params,
++ cubeb_devid output_device,
++ cubeb_stream_params * output_stream_params,
++ unsigned int latency,
++ cubeb_data_callback data_callback,
++ cubeb_state_callback state_callback, void * user_ptr)
++{
++ cubeb_stream* stream = (cubeb_stream*)malloc(sizeof(cubeb_stream));
++ stream->context = context;
++ stream->data_callback = data_callback;
++ stream->state_callback = state_callback;
++ stream->user_ptr = user_ptr;
++
++ assert(!input_stream_params && "not supported.");
++ if (input_device || output_device) {
++ /* Device selection not yet implemented. */
++ return CUBEB_ERROR_DEVICE_UNAVAILABLE;
++ }
++
++ if ((stream->fd = open(CUBEB_OSS_DEFAULT_OUTPUT, O_WRONLY)) == -1) {
++ free(stream);
++ return CUBEB_ERROR;
++ }
++#define SET(what, to) do { unsigned int i = to; \
++ int j = ioctl(stream->fd, what, &i); \
++ if (j == -1 || i != to) { \
++ close(stream->fd); \
++ free(stream); \
++ return CUBEB_ERROR_INVALID_FORMAT; } } while (0)
++
++ stream->params = *output_stream_params;
++ stream->volume = 1.0;
++ stream->panning = 0.0;
++
++ oss_try_set_latency(stream, latency);
++
++ stream->floating = 0;
++ SET(SNDCTL_DSP_CHANNELS, output_stream_params->channels);
++ SET(SNDCTL_DSP_SPEED, output_stream_params->rate);
++ switch (output_stream_params->format) {
++ case CUBEB_SAMPLE_S16LE:
++ SET(SNDCTL_DSP_SETFMT, AFMT_S16_LE);
++ break;
++ case CUBEB_SAMPLE_S16BE:
++ SET(SNDCTL_DSP_SETFMT, AFMT_S16_BE);
++ break;
++ case CUBEB_SAMPLE_FLOAT32LE:
++ SET(SNDCTL_DSP_SETFMT, AFMT_S16_NE);
++ stream->floating = 1;
++ break;
++ default:
++ close(stream->fd);
++ free(stream);
++ return CUBEB_ERROR;
++ }
++
++
++ pthread_mutex_init(&stream->state_mutex, NULL);
++ pthread_cond_init(&stream->state_cond, NULL);
++
++ stream->running = 1;
++ stream->stopped = 1;
++ stream->position_bytes = 0;
++ stream->last_position_bytes = 0;
++ stream->written_frags = 0;
++ stream->missed_frags = 0;
++
++ pthread_create(&stream->th, NULL, writer, (void*)stream);
++
++ *stm = stream;
++
++ return CUBEB_OK;
++}
++
++static void oss_stream_destroy(cubeb_stream * stream)
++{
++ pthread_mutex_lock(&stream->state_mutex);
++
++ stream->running = 0;
++ stream->stopped = 0;
++ pthread_cond_signal(&stream->state_cond);
++
++ pthread_mutex_unlock(&stream->state_mutex);
++
++ pthread_join(stream->th, NULL);
++
++ pthread_mutex_destroy(&stream->state_mutex);
++ pthread_cond_destroy(&stream->state_cond);
++ close(stream->fd);
++ free(stream);
++}
++
++static int oss_stream_get_latency(cubeb_stream * stream, uint32_t * latency)
++{
++ if (ioctl(stream->fd, SNDCTL_DSP_GETODELAY, latency)==-1) {
++ return CUBEB_ERROR;
++ }
++ /* Convert latency from bytes to frames */
++ *latency /= stream->params.channels*sizeof(int16_t);
++ return CUBEB_OK;
++}
++
++
++static int oss_stream_current_optr(cubeb_stream * stream, uint64_t * position)
++{
++ count_info ci;
++ /* Unfortunately, this ioctl is only available in OSS 4.x */
++#ifdef SNDCTL_DSP_CURRENT_OPTR
++ oss_count_t count;
++ if (ioctl(stream->fd, SNDCTL_DSP_CURRENT_OPTR, &count) != -1) {
++ *position = count.samples;// + count.fifo_samples;
++ return CUBEB_OK;
++ }
++#endif
++ /* Fall back to this ioctl in case the previous one fails */
++ if (ioctl(stream->fd, SNDCTL_DSP_GETOPTR, &ci) == -1) {
++ return CUBEB_ERROR;
++ }
++ /* ci.bytes is only 32 bit and will start to wrap after arithmetic overflow */
++ stream->position_bytes += ci.bytes - stream->last_position_bytes;
++ stream->last_position_bytes = ci.bytes;
++ *position = stream->position_bytes/stream->params.channels/sizeof(int16_t);
++ return CUBEB_OK;
++}
++
++static int oss_stream_get_position(cubeb_stream * stream, uint64_t * position)
++{
++ if ( oss_stream_current_optr(stream, position) == CUBEB_OK ){
++ *position -= stream->missed_frags;
++ return CUBEB_OK;
++ }
++ /* If no correct method to get position works we resort to this */
++ *position = stream->written_frags;
++ return CUBEB_OK;
++}
++
++
++static int oss_stream_start(cubeb_stream * stream)
++{
++ pthread_mutex_lock(&stream->state_mutex);
++ if (stream->stopped) {
++ uint64_t ptr;
++ oss_stream_current_optr(stream, &ptr);
++ stream->missed_frags = ptr - stream->written_frags;
++ stream->stopped = 0;
++ pthread_cond_signal(&stream->state_cond);
++ }
++ pthread_mutex_unlock(&stream->state_mutex);
++ return CUBEB_OK;
++}
++
++static int oss_stream_stop(cubeb_stream * stream)
++{
++ pthread_mutex_lock(&stream->state_mutex);
++ stream->stopped = 1;
++ pthread_mutex_unlock(&stream->state_mutex);
++ return CUBEB_OK;
++}
++
++int oss_stream_set_panning(cubeb_stream * stream, float panning)
++{
++ if (stream->params.channels == 2) {
++ stream->panning=panning;
++ }
++ return CUBEB_OK;
++}
++
++int oss_stream_set_volume(cubeb_stream * stream, float volume)
++{
++ stream->volume=volume;
++ return CUBEB_OK;
++}
++
++static struct cubeb_ops const oss_ops = {
++ .init = oss_init,
++ .get_backend_id = oss_get_backend_id,
++ .get_max_channel_count = oss_get_max_channel_count,
++ .get_min_latency = oss_get_min_latency,
++ .get_preferred_sample_rate = oss_get_preferred_sample_rate,
++ .destroy = oss_destroy,
++ .stream_init = oss_stream_init,
++ .stream_destroy = oss_stream_destroy,
++ .stream_start = oss_stream_start,
++ .stream_stop = oss_stream_stop,
++ .stream_get_position = oss_stream_get_position,
++ .stream_get_latency = oss_stream_get_latency,
++ .stream_set_volume = oss_stream_set_volume,
++ .stream_set_panning = oss_stream_set_panning,
++ .stream_get_current_device = NULL,
++ .stream_device_destroy = NULL,
++ .stream_register_device_changed_callback = NULL
++};
diff --git a/firefox-webrtc/patches/patch-media_libcubeb_src_moz.build b/firefox-webrtc/patches/patch-media_libcubeb_src_moz.build
new file mode 100644
index 0000000..d1e8c3a
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libcubeb_src_moz.build
@@ -0,0 +1,38 @@
+$NetBSD: patch-media_libcubeb_src_moz.build,v 1.9 2016/08/06 08:46:59 ryoon Exp $
+
+* Add OSS audio support
+* Support system library
+
+--- media/libcubeb/src/moz.build.orig 2016-07-25 20:22:04.000000000 +0000
++++ media/libcubeb/src/moz.build
+@@ -19,6 +19,12 @@ if CONFIG['MOZ_ALSA']:
+ ]
+ DEFINES['USE_ALSA'] = True
+
++if CONFIG['MOZ_OSS']:
++ SOURCES += [
++ 'cubeb_oss.c',
++ ]
++ DEFINES['USE_OSS'] = True
++
+ if CONFIG['MOZ_PULSEAUDIO']:
+ SOURCES += [
+ 'cubeb_pulse.c',
+@@ -68,6 +74,9 @@ if CONFIG['OS_TARGET'] == 'Android':
+
+ FINAL_LIBRARY = 'gkmedias'
+
++if CONFIG['MOZ_SYSTEM_SPEEX']:
++ SOURCES['cubeb_resampler.cpp'].flags += CONFIG['MOZ_SPEEX_CFLAGS']
++
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+ if CONFIG['ANDROID_VERSION'] >= '17':
+ LOCAL_INCLUDES += [
+@@ -78,6 +87,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk
+ '%' + '%s/system/media/wilhelm/include' % CONFIG['ANDROID_SOURCE'],
+ ]
+
++CFLAGS += CONFIG['MOZ_OSS_CFLAGS']
+ CFLAGS += CONFIG['MOZ_ALSA_CFLAGS']
+ CFLAGS += CONFIG['MOZ_PULSEAUDIO_CFLAGS']
+
diff --git a/firefox-webrtc/patches/patch-media_libsoundtouch_src_cpu__detect__x86.cpp b/firefox-webrtc/patches/patch-media_libsoundtouch_src_cpu__detect__x86.cpp
new file mode 100644
index 0000000..ddc03f5
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libsoundtouch_src_cpu__detect__x86.cpp
@@ -0,0 +1,15 @@
+$NetBSD: patch-media_libsoundtouch_src_cpu__detect__x86.cpp,v 1.5 2014/04/30 15:07:18 ryoon Exp $
+
+--- media/libsoundtouch/src/cpu_detect_x86.cpp.orig 2014-04-18 02:03:48.000000000 +0000
++++ media/libsoundtouch/src/cpu_detect_x86.cpp
+@@ -130,7 +130,9 @@ uint detectCPUextensions(void)
+ #endif
+
+ return res & ~_dwDisabledISA;
+-
++#elif defined(__GNUC__)
++ // No cpuid.h --> no cpuid support
++ return 0;
+ #else
+
+ /// One of these is true:
diff --git a/firefox-webrtc/patches/patch-media_libstagefright_frameworks_av_include_media_stagefright_foundation_AString.h b/firefox-webrtc/patches/patch-media_libstagefright_frameworks_av_include_media_stagefright_foundation_AString.h
new file mode 100644
index 0000000..e81184b
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libstagefright_frameworks_av_include_media_stagefright_foundation_AString.h
@@ -0,0 +1,12 @@
+$NetBSD: patch-media_libstagefright_frameworks_av_include_media_stagefright_foundation_AString.h,v 1.3 2015/12/18 23:51:16 ryoon Exp $
+
+--- media/libstagefright/frameworks/av/include/media/stagefright/foundation/AString.h.orig 2015-12-08 18:06:36.000000000 +0000
++++ media/libstagefright/frameworks/av/include/media/stagefright/foundation/AString.h
+@@ -18,6 +18,7 @@
+
+ #define A_STRING_H_
+
++#include <cctype>
+ #include <sys/types.h>
+
+ namespace stagefright {
diff --git a/firefox-webrtc/patches/patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp b/firefox-webrtc/patches/patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp
new file mode 100644
index 0000000..9133f70
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp
@@ -0,0 +1,17 @@
+$NetBSD: patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp,v 1.3 2016/06/16 12:08:21 ryoon Exp $
+
+* Fix build under NetBSD
+
+--- media/libstagefright/frameworks/av/media/libstagefright/foundation/AString.cpp.orig 2016-05-12 17:13:17.000000000 +0000
++++ media/libstagefright/frameworks/av/media/libstagefright/foundation/AString.cpp
+@@ -23,6 +23,10 @@
+ #include "ADebug.h"
+ #include "AString.h"
+
++#if defined(__NetBSD__) && defined(tolower)
++#undef tolower
++#endif
++
+ namespace stagefright {
+
+ // static
diff --git a/firefox-webrtc/patches/patch-media_libstagefright_system_core_liblog_fake__log__device.c b/firefox-webrtc/patches/patch-media_libstagefright_system_core_liblog_fake__log__device.c
new file mode 100644
index 0000000..51409b5
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libstagefright_system_core_liblog_fake__log__device.c
@@ -0,0 +1,29 @@
+$NetBSD: patch-media_libstagefright_system_core_liblog_fake__log__device.c,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* For NetBSD
+
+--- media/libstagefright/system/core/liblog/fake_log_device.c.orig 2015-01-23 05:59:59.000000000 +0000
++++ media/libstagefright/system/core/liblog/fake_log_device.c 2015-02-16 14:09:00.000000000 +0000
+@@ -229,11 +229,11 @@
+ char tagName[kMaxTagLen];
+ int i, minPrio;
+
+- while (isspace(*tags))
++ while (isspace((unsigned char)*tags))
+ tags++;
+
+ i = 0;
+- while (*tags != '\0' && !isspace(*tags) && *tags != ':' &&
++ while (*tags != '\0' && !isspace((unsigned char)*tags) && *tags != ':' &&
+ i < kMaxTagLen)
+ {
+ tagName[i++] = *tags++;
+@@ -272,7 +272,7 @@
+ }
+
+ tags++;
+- if (*tags != '\0' && !isspace(*tags)) {
++ if (*tags != '\0' && !isspace((unsigned char)*tags)) {
+ TRACE("ERROR: garbage in tag env; expected whitespace\n");
+ TRACE(" env='%s'\n", tags);
+ return;
diff --git a/firefox-webrtc/patches/patch-media_libstagefright_system_core_liblog_logprint.c b/firefox-webrtc/patches/patch-media_libstagefright_system_core_liblog_logprint.c
new file mode 100644
index 0000000..d53d63f
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libstagefright_system_core_liblog_logprint.c
@@ -0,0 +1,24 @@
+$NetBSD: patch-media_libstagefright_system_core_liblog_logprint.c,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* For NetBSD
+
+--- media/libstagefright/system/core/liblog/logprint.c.orig 2015-01-23 05:59:59.000000000 +0000
++++ media/libstagefright/system/core/liblog/logprint.c 2015-02-16 14:12:46.000000000 +0000
+@@ -101,7 +101,7 @@
+ {
+ android_LogPriority pri;
+
+- c = tolower(c);
++ c = tolower((unsigned char)c);
+
+ if (c >= '0' && c <= '9') {
+ if (c >= ('0'+ANDROID_LOG_SILENT)) {
+@@ -370,7 +370,7 @@
+ {
+ char *end = str + strlen(str) - 1;
+
+- while (end >= str && isspace(*end))
++ while (end >= str && isspace((unsigned char)*end))
+ *end-- = '\0';
+ return str;
+ }
diff --git a/firefox-webrtc/patches/patch-media_libtheora_lib_arm_armcpu.c b/firefox-webrtc/patches/patch-media_libtheora_lib_arm_armcpu.c
new file mode 100644
index 0000000..70c7f50
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libtheora_lib_arm_armcpu.c
@@ -0,0 +1,25 @@
+$NetBSD: patch-media_libtheora_lib_arm_armcpu.c,v 1.1 2014/11/26 14:56:28 ryoon Exp $
+
+* NetBSD/evbearmv7hf-el's /proc/cpuinfo return empty, use hardcoded flags.
+
+--- media/libtheora/lib/arm/armcpu.c.orig 2014-11-13 22:50:10.000000000 +0000
++++ media/libtheora/lib/arm/armcpu.c
+@@ -107,6 +107,18 @@ ogg_uint32_t oc_cpu_flags_get(void){
+ return flags;
+ }
+
++#elif defined(__NetBSD__)
++ogg_uint32_t oc_cpu_flags_get(void){
++ ogg_uint32_t flags;
++ /* XXX ryoon: I have no idea about ARM CPU extensions detection mechanism
++ under NetBSD/earm.
++ evbearmv6hf-el machine, Raspberry Pi does not have NEON.
++ evbearmv7hf-el machine, CubieBoard2 does not have EDSP.
++ I have no idea about MEDIA.
++ So I will disable all options. */
++ flags=0;
++ return flags;
++}
+ #else
+ /*The feature registers which can tell us what the processor supports are
+ accessible in priveleged modes only, so we can't have a general user-space
diff --git a/firefox-webrtc/patches/patch-media_libtheora_lib_info.c b/firefox-webrtc/patches/patch-media_libtheora_lib_info.c
new file mode 100644
index 0000000..eedec56
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libtheora_lib_info.c
@@ -0,0 +1,15 @@
+$NetBSD: patch-media_libtheora_lib_info.c,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* For NetBSD
+
+--- media/libtheora/lib/info.c.orig 2015-01-23 05:59:59.000000000 +0000
++++ media/libtheora/lib/info.c 2015-02-16 14:49:17.000000000 +0000
+@@ -29,7 +29,7 @@
+ static int oc_tagcompare(const char *_s1,const char *_s2,int _n){
+ int c;
+ for(c=0;c<_n;c++){
+- if(toupper(_s1[c])!=toupper(_s2[c]))return !0;
++ if(toupper((unsigned char)_s1[c])!=toupper((unsigned char)_s2[c]))return !0;
+ }
+ return _s1[c]!='=';
+ }
diff --git a/firefox-webrtc/patches/patch-media_libtheora_moz.build b/firefox-webrtc/patches/patch-media_libtheora_moz.build
new file mode 100644
index 0000000..1b07a90
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libtheora_moz.build
@@ -0,0 +1,16 @@
+$NetBSD: patch-media_libtheora_moz.build,v 1.7 2016/08/06 08:46:59 ryoon Exp $
+
+* Support system library
+
+--- media/libtheora/moz.build.orig 2016-07-25 20:22:04.000000000 +0000
++++ media/libtheora/moz.build
+@@ -21,6 +21,9 @@ FINAL_LIBRARY = 'gkmedias'
+ # The encoder is currently not included.
+ DEFINES['THEORA_DISABLE_ENCODE'] = True
+
++if CONFIG['MOZ_SYSTEM_OGG']:
++ CFLAGS += CONFIG['MOZ_OGG_CFLAGS']
++
+ # Suppress warnings in third-party code.
+ if CONFIG['GNU_CC'] or CONFIG['CLANG_CL']:
+ CFLAGS += ['-Wno-type-limits']
diff --git a/firefox-webrtc/patches/patch-media_libtremor_Makefile.in b/firefox-webrtc/patches/patch-media_libtremor_Makefile.in
new file mode 100644
index 0000000..c8d6ce8
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libtremor_Makefile.in
@@ -0,0 +1,14 @@
+$NetBSD: patch-media_libtremor_Makefile.in,v 1.2 2016/08/06 08:46:59 ryoon Exp $
+
+--- media/libtremor/Makefile.in.orig 2016-08-04 17:13:18.579788654 +0000
++++ media/libtremor/Makefile.in
+@@ -0,0 +1,9 @@
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++include $(topsrcdir)/config/rules.mk
++
++ifdef MOZ_SYSTEM_OGG
++CFLAGS += $(MOZ_OGG_CFLAGS)
++endif
diff --git a/firefox-webrtc/patches/patch-media_libtremor_moz.build b/firefox-webrtc/patches/patch-media_libtremor_moz.build
new file mode 100644
index 0000000..e950f3b
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libtremor_moz.build
@@ -0,0 +1,12 @@
+$NetBSD: patch-media_libtremor_moz.build,v 1.3 2016/08/06 08:46:59 ryoon Exp $
+
+* Support system library
+
+--- media/libtremor/moz.build.orig 2016-05-12 17:13:17.000000000 +0000
++++ media/libtremor/moz.build
+@@ -9,3 +9,5 @@ with Files('*'):
+
+ DIRS += ['include/tremor', 'lib']
+
++if CONFIG['MOZ_SYSTEM_OGG']:
++ CFLAGS += CONFIG['MOZ_OGG_CFLAGS']
diff --git a/firefox-webrtc/patches/patch-media_libvorbis_Makefile.in b/firefox-webrtc/patches/patch-media_libvorbis_Makefile.in
new file mode 100644
index 0000000..f5848ad
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libvorbis_Makefile.in
@@ -0,0 +1,14 @@
+$NetBSD: patch-media_libvorbis_Makefile.in,v 1.2 2016/08/06 08:46:59 ryoon Exp $
+
+--- media/libvorbis/Makefile.in.orig 2016-08-04 17:13:18.580232660 +0000
++++ media/libvorbis/Makefile.in
+@@ -0,0 +1,9 @@
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++include $(topsrcdir)/config/rules.mk
++
++ifdef MOZ_SYSTEM_OGG
++CFLAGS += $(MOZ_OGG_CFLAGS)
++endif
diff --git a/firefox-webrtc/patches/patch-media_libvorbis_lib_vorbis_info.c b/firefox-webrtc/patches/patch-media_libvorbis_lib_vorbis_info.c
new file mode 100644
index 0000000..ec1a745
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libvorbis_lib_vorbis_info.c
@@ -0,0 +1,15 @@
+$NetBSD: patch-media_libvorbis_lib_vorbis_info.c,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* For NetBSD
+
+--- media/libvorbis/lib/vorbis_info.c.orig 2015-01-23 05:59:59.000000000 +0000
++++ media/libvorbis/lib/vorbis_info.c 2015-02-16 14:36:05.000000000 +0000
+@@ -87,7 +87,7 @@
+ static int tagcompare(const char *s1, const char *s2, int n){
+ int c=0;
+ while(c < n){
+- if(toupper(s1[c]) != toupper(s2[c]))
++ if(toupper((unsigned char)s1[c]) != toupper((unsigned char)s2[c]))
+ return !0;
+ c++;
+ }
diff --git a/firefox-webrtc/patches/patch-media_libvorbis_moz.build b/firefox-webrtc/patches/patch-media_libvorbis_moz.build
new file mode 100644
index 0000000..86f41dd
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libvorbis_moz.build
@@ -0,0 +1,13 @@
+$NetBSD: patch-media_libvorbis_moz.build,v 1.3 2016/08/06 08:46:59 ryoon Exp $
+
+* Support system library
+
+--- media/libvorbis/moz.build.orig 2016-05-12 17:13:17.000000000 +0000
++++ media/libvorbis/moz.build
+@@ -56,3 +56,6 @@ FINAL_LIBRARY = 'gkmedias'
+ # Suppress warnings in third-party code.
+ if CONFIG['GNU_CC']:
+ CFLAGS += ['-Wno-uninitialized']
++
++if CONFIG['MOZ_SYSTEM_OGG']:
++ CFLAGS += CONFIG['MOZ_OGG_CFLAGS']
diff --git a/firefox-webrtc/patches/patch-media_libyuv_include_libyuv_scale__row.h b/firefox-webrtc/patches/patch-media_libyuv_include_libyuv_scale__row.h
new file mode 100644
index 0000000..2305396
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_libyuv_include_libyuv_scale__row.h
@@ -0,0 +1,17 @@
+$NetBSD: patch-media_libyuv_include_libyuv_scale__row.h,v 1.1 2014/11/26 14:56:28 ryoon Exp $
+
+--- media/libyuv/include/libyuv/scale_row.h.orig 2014-11-13 22:50:11.000000000 +0000
++++ media/libyuv/include/libyuv/scale_row.h
+@@ -219,10 +219,10 @@ void ScaleARGBFilterCols_SSSE3(uint8* ds
+ void ScaleARGBColsUp2_SSE2(uint8* dst_argb, const uint8* src_argb,
+ int dst_width, int x, int dx);
+ // Row functions.
+-void ScaleARGBRowDownEven_NEON(const uint8* src_argb, int src_stride,
++void ScaleARGBRowDownEven_NEON(const uint8* src_argb, ptrdiff_t src_stride,
+ int src_stepx,
+ uint8* dst_argb, int dst_width);
+-void ScaleARGBRowDownEvenBox_NEON(const uint8* src_argb, int src_stride,
++void ScaleARGBRowDownEvenBox_NEON(const uint8* src_argb, ptrdiff_t src_stride,
+ int src_stepx,
+ uint8* dst_argb, int dst_width);
+ void ScaleARGBRowDown2_NEON(const uint8* src_ptr, ptrdiff_t src_stride,
diff --git a/firefox-webrtc/patches/patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h b/firefox-webrtc/patches/patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h
new file mode 100644
index 0000000..dd1c40d
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h
@@ -0,0 +1,19 @@
+$NetBSD: patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h,v 1.7 2014/07/24 14:57:12 ryoon Exp $
+
+--- media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h.orig 2014-07-17 01:45:31.000000000 +0000
++++ media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h
+@@ -30,7 +30,13 @@
+ * $FreeBSD: src/sys/sys/queue.h,v 1.58 2004/04/07 04:19:49 imp Exp $
+ */
+
+-#ifndef _SYS_QUEUE_H_
++#if (defined(BSD) && !defined(__OpenBSD__)) || defined(DARWIN)
++#include_next <sys/queue.h>
++# if defined(__DragonFly__)
++#define STAILQ_FOREACH_SAFE STAILQ_FOREACH_MUTABLE
++#define TAILQ_FOREACH_SAFE TAILQ_FOREACH_MUTABLE
++# endif
++#elif !defined(_SYS_QUEUE_H_)
+ #define _SYS_QUEUE_H_
+
+ #include <stddef.h>
diff --git a/firefox-webrtc/patches/patch-media_openmax__dl_dl_api_armCOMM__s.h b/firefox-webrtc/patches/patch-media_openmax__dl_dl_api_armCOMM__s.h
new file mode 100644
index 0000000..c2ed0f4
--- /dev/null
+++ b/firefox-webrtc/patches/patch-media_openmax__dl_dl_api_armCOMM__s.h
@@ -0,0 +1,39 @@
+$NetBSD: patch-media_openmax__dl_dl_api_armCOMM__s.h,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* Support NetBSD/earm
+
+--- media/openmax_dl/dl/api/armCOMM_s.h.orig 2015-09-29 21:44:56.000000000 +0000
++++ media/openmax_dl/dl/api/armCOMM_s.h
+@@ -11,6 +11,12 @@
+ @// This file was originally licensed as follows. It has been
+ @// relicensed with permission from the copyright holders.
+ @//
++
++#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__)
++#define UNWIND
++#else
++#define UNWIND @
++#endif
+
+ @//
+ @// File Name: armCOMM_s.h
+@@ -175,7 +181,8 @@
+ .object_arch armv4
+ .align 2
+ \name :
+-.fnstart
++ .cfi_startproc
++ UNWIND .fnstart
+ @ Save specified R registers
+ _M_GETRREGLIST \rreg
+ _M_PUSH_RREG
+@@ -202,7 +209,8 @@
+ .endif
+ @ Restore any saved R or D registers.
+ _M_RET
+- .fnend
++ UNWIND .fnend
++ .cfi_endproc
+ .endfunc
+ @ Reset the global stack tracking variables back to their
+ @ initial values.
diff --git a/firefox-webrtc/patches/patch-memory_build_mozjemalloc__compat.c b/firefox-webrtc/patches/patch-memory_build_mozjemalloc__compat.c
new file mode 100644
index 0000000..af5f392
--- /dev/null
+++ b/firefox-webrtc/patches/patch-memory_build_mozjemalloc__compat.c
@@ -0,0 +1,53 @@
+$NetBSD: patch-memory_build_mozjemalloc__compat.c,v 1.4 2015/12/16 09:34:56 ryoon Exp $
+
+--- memory/build/mozjemalloc_compat.c.orig 2015-12-04 00:37:04.000000000 +0000
++++ memory/build/mozjemalloc_compat.c
+@@ -140,6 +140,48 @@ compute_bin_unused_and_bookkeeping(jemal
+ stats->bin_unused = bin_unused;
+ }
+
++static size_t
++compute_bin_unused(unsigned int narenas)
++{
++ size_t bin_unused = 0;
++
++ uint32_t nregs; // number of regions per run in the j-th bin
++ size_t reg_size; // size of regions served by the j-th bin
++ size_t curruns; // number of runs belonging to a bin
++ size_t curregs; // number of allocated regions in a bin
++
++ unsigned int nbins; // number of bins per arena
++ unsigned int i, j;
++
++ // curruns and curregs are not defined for uninitialized arenas,
++ // so we skip them when computing bin_unused. However, initialized
++ // arenas are not guaranteed to be sequential, so we must test each
++ // one when iterating below.
++ bool initialized[100]; // should be narenas, but MSVC doesn't have VLAs
++ size_t isz = sizeof(initialized) / sizeof(initialized[0]);
++
++ je_(mallctl)("arenas.initialized", initialized, &isz, NULL, 0);
++ CTL_GET("arenas.nbins", nbins);
++
++ for (j = 0; j < nbins; j++) {
++ CTL_I_GET("arenas.bin.0.nregs", nregs, j);
++ CTL_I_GET("arenas.bin.0.size", reg_size, j);
++
++ for (i = 0; i < narenas; i++) {
++ if (!initialized[i]) {
++ continue;
++ }
++
++ CTL_IJ_GET("stats.arenas.0.bins.0.curruns", curruns, i, j);
++ CTL_IJ_GET("stats.arenas.0.bins.0.curregs", curregs, i, j);
++
++ bin_unused += (nregs * curruns - curregs) * reg_size;
++ }
++ }
++
++ return bin_unused;
++}
++
+ MOZ_JEMALLOC_API void
+ jemalloc_stats_impl(jemalloc_stats_t *stats)
+ {
diff --git a/firefox-webrtc/patches/patch-memory_mozalloc_mozalloc__abort.cpp b/firefox-webrtc/patches/patch-memory_mozalloc_mozalloc__abort.cpp
new file mode 100644
index 0000000..1d73814
--- /dev/null
+++ b/firefox-webrtc/patches/patch-memory_mozalloc_mozalloc__abort.cpp
@@ -0,0 +1,18 @@
+$NetBSD: patch-memory_mozalloc_mozalloc__abort.cpp,v 1.6 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- memory/mozalloc/mozalloc_abort.cpp.orig 2015-08-24 21:53:14.000000000 +0000
++++ memory/mozalloc/mozalloc_abort.cpp
+@@ -68,7 +68,11 @@ void fillAbortMessage(char (&msg)[N], ui
+ //
+ // That segmentation fault will be interpreted as another bug by ASan and as a
+ // result, ASan will just exit(1) instead of aborting.
++#if defined(SOLARIS)
++void std::abort(void)
++#else
+ void abort(void)
++#endif
+ {
+ #ifdef MOZ_WIDGET_ANDROID
+ char msg[64] = {};
diff --git a/firefox-webrtc/patches/patch-mfbt_Attributes.h b/firefox-webrtc/patches/patch-mfbt_Attributes.h
new file mode 100644
index 0000000..f82cf88
--- /dev/null
+++ b/firefox-webrtc/patches/patch-mfbt_Attributes.h
@@ -0,0 +1,22 @@
+$NetBSD: patch-mfbt_Attributes.h,v 1.7 2016/08/06 08:46:59 ryoon Exp $
+
+--- mfbt/Attributes.h.orig 2016-07-25 20:22:04.000000000 +0000
++++ mfbt/Attributes.h
+@@ -50,6 +50,7 @@
+ * don't indicate support for them here, due to
+ * http://stackoverflow.com/questions/20498142/visual-studio-2013-explicit-keyword-bug
+ */
++# define MOZ_HAVE_CXX11_ALIGNAS
+ # define MOZ_HAVE_NEVER_INLINE __declspec(noinline)
+ # define MOZ_HAVE_NORETURN __declspec(noreturn)
+ # if _MSC_VER >= 1900
+@@ -72,6 +73,9 @@
+ # ifndef __has_extension
+ # define __has_extension __has_feature /* compatibility, for older versions of clang */
+ # endif
++# if __has_extension(cxx_alignas)
++# define MOZ_HAVE_CXX11_ALIGNAS
++# endif
+ # if __has_extension(cxx_constexpr)
+ # define MOZ_HAVE_CXX11_CONSTEXPR
+ # endif
diff --git a/firefox-webrtc/patches/patch-mfbt_Poison.cpp b/firefox-webrtc/patches/patch-mfbt_Poison.cpp
new file mode 100644
index 0000000..ae4a2f8
--- /dev/null
+++ b/firefox-webrtc/patches/patch-mfbt_Poison.cpp
@@ -0,0 +1,20 @@
+$NetBSD: patch-mfbt_Poison.cpp,v 1.6 2014/11/26 14:56:28 ryoon Exp $
+
+* Use posix_madvise(3) instead of madvise(3) for Solaris/SunOS.
+ Solaris/SunOS's madvise(3) is not enabled in this context,
+ and its first argument type is different from NetBSD/Linux's one.
+
+--- mfbt/Poison.cpp.orig 2014-11-13 22:50:12.000000000 +0000
++++ mfbt/Poison.cpp
+@@ -129,7 +129,11 @@ ReleaseRegion(void* aRegion, uintptr_t a
+ static bool
+ ProbeRegion(uintptr_t aRegion, uintptr_t aSize)
+ {
++#if !defined(__sun__)
+ if (madvise(reinterpret_cast<void*>(aRegion), aSize, MADV_NORMAL)) {
++#else
++ if (posix_madvise(reinterpret_cast<void*>(aRegion), aSize, MADV_NORMAL)) {
++#endif
+ return true;
+ } else {
+ return false;
diff --git a/firefox-webrtc/patches/patch-modules_libjar_nsZipArchive.cpp b/firefox-webrtc/patches/patch-modules_libjar_nsZipArchive.cpp
new file mode 100644
index 0000000..5808564
--- /dev/null
+++ b/firefox-webrtc/patches/patch-modules_libjar_nsZipArchive.cpp
@@ -0,0 +1,17 @@
+$NetBSD: patch-modules_libjar_nsZipArchive.cpp,v 1.4 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- modules/libjar/nsZipArchive.cpp.orig 2013-06-18 11:01:37.000000000 +0000
++++ modules/libjar/nsZipArchive.cpp
+@@ -590,7 +590,9 @@ MOZ_WIN_MEM_TRY_BEGIN
+ // Success means optimized jar layout from bug 559961 is in effect
+ uint32_t readaheadLength = xtolong(startp);
+ if (readaheadLength) {
+-#if defined(XP_UNIX)
++#if defined(OS_SOLARIS)
++ posix_madvise(const_cast<uint8_t*>(startp), readaheadLength, POSIX_MADV_WILLNEED);
++#elif defined(XP_UNIX)
+ madvise(const_cast<uint8_t*>(startp), readaheadLength, MADV_WILLNEED);
+ #elif defined(XP_WIN)
+ if (aFd) {
diff --git a/firefox-webrtc/patches/patch-modules_libpref_init_all.js b/firefox-webrtc/patches/patch-modules_libpref_init_all.js
new file mode 100644
index 0000000..042a330
--- /dev/null
+++ b/firefox-webrtc/patches/patch-modules_libpref_init_all.js
@@ -0,0 +1,15 @@
+$NetBSD: patch-modules_libpref_init_all.js,v 1.5 2016/08/06 08:46:59 ryoon Exp $
+
+* Improve stability under NetBSD.
+
+--- modules/libpref/init/all.js.orig 2016-07-25 20:22:05.000000000 +0000
++++ modules/libpref/init/all.js
+@@ -4540,7 +4540,7 @@ pref("device.sensors.enabled", true);
+ pref("device.storage.enabled", false);
+
+ // Toggle which thread the HTML5 parser uses for stream parsing
+-pref("html5.offmainthread", true);
++pref("html5.offmainthread", false);
+ // Time in milliseconds between the time a network buffer is seen and the
+ // timer firing when the timer hasn't fired previously in this parse in the
+ // off-the-main-thread HTML5 parser.
diff --git a/firefox-webrtc/patches/patch-mozglue_build_arm.cpp b/firefox-webrtc/patches/patch-mozglue_build_arm.cpp
new file mode 100644
index 0000000..dcbc706
--- /dev/null
+++ b/firefox-webrtc/patches/patch-mozglue_build_arm.cpp
@@ -0,0 +1,59 @@
+$NetBSD: patch-mozglue_build_arm.cpp,v 1.3 2016/09/20 20:01:41 ryoon Exp $
+
+* Support NetBSD/earm
+
+--- mozglue/build/arm.cpp.orig 2016-08-01 16:14:43.000000000 +0000
++++ mozglue/build/arm.cpp
+@@ -13,10 +13,13 @@
+ // we don't compile one of these detection methods. The detection code here is
+ // based on the CPU detection in libtheora.
+
+-# if defined(__linux__) || defined(ANDROID)
++# if defined(__linux__) || defined(ANDROID) || defined(__NetBSD__)
+ # include <stdio.h>
+ # include <stdlib.h>
+ # include <string.h>
++# if defined(__NetBSD__)
++# include <sys/sysctl.h>
++# endif
+
+ enum{
+ MOZILLA_HAS_EDSP_FLAG=1,
+@@ -25,6 +28,29 @@ enum{
+ MOZILLA_HAS_NEON_FLAG=8
+ };
+
++# if defined(__NetBSD__)
++static unsigned
++get_arm_cpu_flags(void)
++{
++ unsigned flags = 0;
++ size_t len;
++ int flag;
++
++ len = sizeof(flag);
++ if (sysctlbyname("machdep.simdex_present", &flag, &len, NULL, 0) == 0 && flag) {
++ flags |= MOZILLA_HAS_ARMV6_FLAG;
++ flags |= MOZILLA_HAS_EDSP_FLAG;
++ }
++
++ len = sizeof(flag);
++ if (sysctlbyname("machdep.neon_present", &flag, &len, NULL, 0) == 0 && flag) {
++ flags |= MOZILLA_HAS_ARMV7_FLAG;
++ flags |= MOZILLA_HAS_NEON_FLAG;
++ }
++
++ return flags;
++}
++# else
+ static unsigned
+ get_arm_cpu_flags(void)
+ {
+@@ -89,6 +115,7 @@ get_arm_cpu_flags(void)
+ }
+ return flags;
+ }
++# endif
+
+ // Cache a local copy so we only have to read /proc/cpuinfo once.
+ static unsigned arm_cpu_flags = get_arm_cpu_flags();
diff --git a/firefox-webrtc/patches/patch-mozglue_build_arm.h b/firefox-webrtc/patches/patch-mozglue_build_arm.h
new file mode 100644
index 0000000..e8cc828
--- /dev/null
+++ b/firefox-webrtc/patches/patch-mozglue_build_arm.h
@@ -0,0 +1,15 @@
+$NetBSD: patch-mozglue_build_arm.h,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* Support NetBSD/earm
+
+--- mozglue/build/arm.h.orig 2015-09-29 21:45:02.000000000 +0000
++++ mozglue/build/arm.h
+@@ -76,7 +76,7 @@
+ # endif
+
+ // Currently we only have CPU detection for Linux via /proc/cpuinfo
+-# if defined(__linux__) || defined(ANDROID)
++# if defined(__linux__) || defined(ANDROID) || defined(__NetBSD__)
+ # define MOZILLA_ARM_HAVE_CPUID_DETECTION 1
+ # endif
+
diff --git a/firefox-webrtc/patches/patch-python_mozbuild_mozbuild_configure_options.py b/firefox-webrtc/patches/patch-python_mozbuild_mozbuild_configure_options.py
new file mode 100644
index 0000000..2ac802a
--- /dev/null
+++ b/firefox-webrtc/patches/patch-python_mozbuild_mozbuild_configure_options.py
@@ -0,0 +1,26 @@
+$NetBSD: patch-python_mozbuild_mozbuild_configure_options.py,v 1.1 2016/08/06 08:46:59 ryoon Exp $
+
+* Allow lowercase environmental variables
+
+--- python/mozbuild/mozbuild/configure/options.py.orig 2016-07-25 20:22:07.000000000 +0000
++++ python/mozbuild/mozbuild/configure/options.py
+@@ -141,9 +141,6 @@ class Option(object):
+ if not isinstance(env, types.StringTypes):
+ raise InvalidOptionError(
+ 'Environment variable name must be a string')
+- if not env.isupper():
+- raise InvalidOptionError(
+- 'Environment variable name must be all uppercase')
+ if nargs not in (None, '?', '*', '+') and not (
+ isinstance(nargs, int) and nargs >= 0):
+ raise InvalidOptionError(
+@@ -250,9 +247,6 @@ class Option(object):
+ if name.startswith('-'):
+ raise InvalidOptionError(
+ 'Option must start with two dashes instead of one')
+- if name.islower():
+- raise InvalidOptionError(
+- 'Environment variable name must be all uppercase')
+ return '', name, values
+
+ @staticmethod
diff --git a/firefox-webrtc/patches/patch-rc b/firefox-webrtc/patches/patch-rc
new file mode 100644
index 0000000..3fa7093
--- /dev/null
+++ b/firefox-webrtc/patches/patch-rc
@@ -0,0 +1,18 @@
+$NetBSD: patch-rc,v 1.8 2016/06/16 12:08:21 ryoon Exp $
+
+* Fix application name
+
+--- browser/branding/unofficial/locales/en-US/brand.dtd.orig 2015-08-24 21:53:06.000000000 +0000
++++ browser/branding/unofficial/locales/en-US/brand.dtd
+@@ -2,8 +2,8 @@
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+-<!ENTITY brandShorterName "Nightly">
+-<!ENTITY brandShortName "Nightly">
+-<!ENTITY brandFullName "Nightly">
++<!ENTITY brandShorterName "Browser">
++<!ENTITY brandShortName "Browser">
++<!ENTITY brandFullName "Browser">
+ <!ENTITY vendorShortName "Mozilla">
+ <!ENTITY trademarkInfo.part1 " ">
diff --git a/firefox-webrtc/patches/patch-toolkit_components_protobuf_src_google_protobuf_stubs_atomicops.h b/firefox-webrtc/patches/patch-toolkit_components_protobuf_src_google_protobuf_stubs_atomicops.h
new file mode 100644
index 0000000..3efc719
--- /dev/null
+++ b/firefox-webrtc/patches/patch-toolkit_components_protobuf_src_google_protobuf_stubs_atomicops.h
@@ -0,0 +1,24 @@
+$NetBSD: patch-toolkit_components_protobuf_src_google_protobuf_stubs_atomicops.h,v 1.3 2016/08/06 08:46:59 ryoon Exp $
+
+--- toolkit/components/protobuf/src/google/protobuf/stubs/atomicops.h.orig 2016-07-25 20:22:06.000000000 +0000
++++ toolkit/components/protobuf/src/google/protobuf/stubs/atomicops.h
+@@ -76,6 +76,11 @@ typedef intptr_t Atomic64;
+ #endif
+ #endif
+
++#if defined(__NetBSD__) && defined(__arm__)
++// NetBSD/arm uses long for intptr_t, which fails -fpermissive checks. So
++// explicitly use int32 here instead.
++typedef int32 AtomicWord;
++#else
+ // Use AtomicWord for a machine-sized pointer. It will use the Atomic32 or
+ // Atomic64 routines below, depending on your architecture.
+ #if defined(__OpenBSD__) && !defined(GOOGLE_PROTOBUF_ARCH_64_BIT)
+@@ -83,6 +88,7 @@ typedef Atomic32 AtomicWord;
+ #else
+ typedef intptr_t AtomicWord;
+ #endif
++#endif
+
+ // Atomically execute:
+ // result = *ptr;
diff --git a/firefox-webrtc/patches/patch-toolkit_components_protobuf_src_google_protobuf_stubs_platform__macros.h b/firefox-webrtc/patches/patch-toolkit_components_protobuf_src_google_protobuf_stubs_platform__macros.h
new file mode 100644
index 0000000..a8eb02d
--- /dev/null
+++ b/firefox-webrtc/patches/patch-toolkit_components_protobuf_src_google_protobuf_stubs_platform__macros.h
@@ -0,0 +1,15 @@
+$NetBSD: patch-toolkit_components_protobuf_src_google_protobuf_stubs_platform__macros.h,v 1.2 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h.orig 2015-09-11 00:23:02.000000000 +0000
++++ toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h
+@@ -67,7 +67,7 @@
+ #define GOOGLE_PROTOBUF_ARCH_32_BIT 1
+ #elif defined(sparc)
+ #define GOOGLE_PROTOBUF_ARCH_SPARC 1
+-#ifdef SOLARIS_64BIT_ENABLED
++#if (defined(sun) && defined(SOLARIS_64BIT_ENABLED)) || __LP64__
+ #define GOOGLE_PROTOBUF_ARCH_64_BIT 1
+ #else
+ #define GOOGLE_PROTOBUF_ARCH_32_BIT 1
diff --git a/firefox-webrtc/patches/patch-toolkit_components_terminator_nsTerminator.cpp b/firefox-webrtc/patches/patch-toolkit_components_terminator_nsTerminator.cpp
new file mode 100644
index 0000000..3856f87
--- /dev/null
+++ b/firefox-webrtc/patches/patch-toolkit_components_terminator_nsTerminator.cpp
@@ -0,0 +1,27 @@
+$NetBSD: patch-toolkit_components_terminator_nsTerminator.cpp,v 1.1 2016/06/16 12:08:21 ryoon Exp $
+
+* Fix segfault on exit under NetBSD
+
+--- toolkit/components/terminator/nsTerminator.cpp.orig 2016-06-15 21:54:53.514370128 +0000
++++ toolkit/components/terminator/nsTerminator.cpp
+@@ -36,7 +36,7 @@
+ #if defined(XP_WIN)
+ #include <windows.h>
+ #else
+-#include <unistd.h>
++#include <time.h>
+ #endif
+
+ #include "mozilla/ArrayUtils.h"
+@@ -147,7 +147,10 @@ RunWatchdog(void* arg)
+ #if defined(XP_WIN)
+ Sleep(1000 /* ms */);
+ #else
+- usleep(1000000 /* usec */);
++ struct timespec tickd;
++ tickd.tv_sec = 1;
++ tickd.tv_nsec = 0;
++ nanosleep(&tickd, NULL);
+ #endif
+
+ if (gHeartbeat++ < timeToLive) {
diff --git a/firefox-webrtc/patches/patch-toolkit_library_libxul.mk b/firefox-webrtc/patches/patch-toolkit_library_libxul.mk
new file mode 100644
index 0000000..91de9d6
--- /dev/null
+++ b/firefox-webrtc/patches/patch-toolkit_library_libxul.mk
@@ -0,0 +1,16 @@
+$NetBSD: patch-toolkit_library_libxul.mk,v 1.4 2016/08/16 09:34:12 tnn Exp $
+
+Can't do relocation against extern protected symbol (pkg/50767)
+usr/bin/ld: ../../xpcom/components/nsComponentManager.o: relocation R_X86_64_PC32 against protected symbol `start_kPStaticModules_NSModule' can not be used when making a shared object
+
+--- toolkit/library/libxul.mk.orig 2016-06-18 12:32:59.901404958 +0000
++++ toolkit/library/libxul.mk
+@@ -55,7 +55,7 @@ endif
+ ifdef _MSC_VER
+ get_first_and_last = dumpbin -exports $1 | grep _NSModule@@ | sort -k 3 | sed -n 's/^.*?\([^@]*\)@@.*$$/\1/;1p;$$p'
+ else
+-get_first_and_last = $(TOOLCHAIN_PREFIX)nm -g $1 | grep _NSModule$$ | grep -vw refptr | sort | sed -n 's/^.* _*\([^ ]*\)$$/\1/;1p;$$p'
++get_first_and_last = $(TOOLCHAIN_PREFIX)nm $1 | grep _NSModule$$ | grep -vw refptr | sort | sed -n 's/^.* _*\([^ ]*\)$$/\1/;1p;$$p'
+ endif
+
+ LOCAL_CHECKS = test "$$($(get_first_and_last) | xargs echo)" != "start_kPStaticModules_NSModule end_kPStaticModules_NSModule" && echo "NSModules are not ordered appropriately" && exit 1 || exit 0
diff --git a/firefox-webrtc/patches/patch-toolkit_library_moz.build b/firefox-webrtc/patches/patch-toolkit_library_moz.build
new file mode 100644
index 0000000..d4e15df
--- /dev/null
+++ b/firefox-webrtc/patches/patch-toolkit_library_moz.build
@@ -0,0 +1,55 @@
+$NetBSD: patch-toolkit_library_moz.build,v 1.7 2016/08/06 08:46:59 ryoon Exp $
+
+* Support system libraries
+
+--- toolkit/library/moz.build.orig 2016-07-25 20:22:07.000000000 +0000
++++ toolkit/library/moz.build
+@@ -211,6 +211,7 @@ if CONFIG['OS_ARCH'] == 'Linux' and CONF
+ ]
+
+ OS_LIBS += CONFIG['MOZ_CAIRO_OSLIBS']
++OS_LIBS += CONFIG['MOZ_LIBV4L2_LIBS']
+ OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
+ OS_LIBS += CONFIG['MOZ_SERVO_LIBS']
+
+@@ -223,6 +224,30 @@ if CONFIG['MOZ_SYSTEM_PNG']:
+ if CONFIG['MOZ_SYSTEM_HUNSPELL']:
+ OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS']
+
++if CONFIG['MOZ_SYSTEM_OGG']:
++ OS_LIBS += CONFIG['MOZ_OGG_LIBS']
++
++if CONFIG['MOZ_SYSTEM_THEORA']:
++ OS_LIBS += CONFIG['MOZ_THEORA_LIBS']
++
++if CONFIG['MOZ_SYSTEM_VORBIS']:
++ OS_LIBS += CONFIG['MOZ_VORBIS_LIBS']
++
++if CONFIG['MOZ_SYSTEM_TREMOR']:
++ OS_LIBS += CONFIG['MOZ_TREMOR_LIBS']
++
++if CONFIG['MOZ_SYSTEM_CELT']:
++ OS_LIBS += CONFIG['MOZ_CELT_LIBS']
++
++if CONFIG['MOZ_SYSTEM_OPUS']:
++ OS_LIBS += CONFIG['MOZ_OPUS_LIBS']
++
++if CONFIG['MOZ_SYSTEM_SPEEX']:
++ OS_LIBS += CONFIG['MOZ_SPEEX_LIBS']
++
++if CONFIG['MOZ_SYSTEM_SOUNDTOUCH']:
++ OS_LIBS += CONFIG['MOZ_SOUNDTOUCH_LIBS']
++
+ if CONFIG['MOZ_SYSTEM_LIBEVENT']:
+ OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS']
+
+@@ -235,6 +260,9 @@ if not CONFIG['MOZ_TREE_PIXMAN']:
+ if CONFIG['MOZ_ALSA']:
+ OS_LIBS += CONFIG['MOZ_ALSA_LIBS']
+
++if CONFIG['MOZ_OSS']:
++ OS_LIBS += CONFIG['MOZ_OSS_LIBS']
++
+ if CONFIG['HAVE_CLOCK_MONOTONIC']:
+ OS_LIBS += CONFIG['REALTIME_LIBS']
+
diff --git a/firefox-webrtc/patches/patch-toolkit_modules_GMPUtils.jsm b/firefox-webrtc/patches/patch-toolkit_modules_GMPUtils.jsm
new file mode 100644
index 0000000..0d03a8c
--- /dev/null
+++ b/firefox-webrtc/patches/patch-toolkit_modules_GMPUtils.jsm
@@ -0,0 +1,14 @@
+$NetBSD: patch-toolkit_modules_GMPUtils.jsm,v 1.3 2016/09/20 20:01:41 ryoon Exp $
+
+* Enable Google widevine CDM for NetBSD
+
+--- toolkit/modules/GMPUtils.jsm.orig 2016-08-10 20:27:55.000000000 +0000
++++ toolkit/modules/GMPUtils.jsm
+@@ -92,6 +92,7 @@ this.GMPUtils = {
+ // Mac OSX, and Linux.
+ return AppConstants.isPlatformAndVersionAtLeast("win", "6") ||
+ AppConstants.platform == "macosx" ||
++ AppConstants.platform == "netbsd" ||
+ AppConstants.platform == "linux";
+ }
+
diff --git a/firefox-webrtc/patches/patch-toolkit_moz.configure b/firefox-webrtc/patches/patch-toolkit_moz.configure
new file mode 100644
index 0000000..0405136
--- /dev/null
+++ b/firefox-webrtc/patches/patch-toolkit_moz.configure
@@ -0,0 +1,15 @@
+$NetBSD: patch-toolkit_moz.configure,v 1.1 2016/09/20 20:01:41 ryoon Exp $
+
+* Enable widevide CDM for NetBSD
+
+--- toolkit/moz.configure.orig 2016-08-29 20:32:20.000000000 +0000
++++ toolkit/moz.configure
+@@ -348,7 +348,7 @@ option('--enable-eme',
+ def enable_eme(value, target):
+ # Widevine EME by default enabled on desktop Windows, MacOS and Linux,
+ # x86 and x64 builds.
+- if (target.kernel in ('Darwin', 'WINNT', 'Linux') and
++ if (target.kernel in ('Darwin', 'WINNT', 'Linux', 'NetBSD') and
+ target.os not in ('Android', 'iOS') and
+ target.cpu in ('x86', 'x86_64')):
+ return value
diff --git a/firefox-webrtc/patches/patch-toolkit_mozapps_extensions_test_browser_browser__gmpProvider.js b/firefox-webrtc/patches/patch-toolkit_mozapps_extensions_test_browser_browser__gmpProvider.js
new file mode 100644
index 0000000..451695d
--- /dev/null
+++ b/firefox-webrtc/patches/patch-toolkit_mozapps_extensions_test_browser_browser__gmpProvider.js
@@ -0,0 +1,14 @@
+$NetBSD: patch-toolkit_mozapps_extensions_test_browser_browser__gmpProvider.js,v 1.1 2016/09/20 20:01:41 ryoon Exp $
+
+* Enable Google widevine CDM for NetBSD
+
+--- toolkit/mozapps/extensions/test/browser/browser_gmpProvider.js.orig 2016-08-10 04:19:24.000000000 +0000
++++ toolkit/mozapps/extensions/test/browser/browser_gmpProvider.js
+@@ -390,6 +390,7 @@ add_task(function* testEmeSupport() {
+ } else if (addon.id == GMPScope.WIDEVINE_ID) {
+ if (AppConstants.isPlatformAndVersionAtLeast("win", "6") ||
+ AppConstants.platform == "macosx" ||
++ AppConstants.platform == "netbsd" ||
+ AppConstants.platform == "linux") {
+ Assert.ok(item, "Widevine supported, found add-on element.");
+ } else {
diff --git a/firefox-webrtc/patches/patch-toolkit_xre_glxtest.cpp b/firefox-webrtc/patches/patch-toolkit_xre_glxtest.cpp
new file mode 100644
index 0000000..fda197d
--- /dev/null
+++ b/firefox-webrtc/patches/patch-toolkit_xre_glxtest.cpp
@@ -0,0 +1,16 @@
+$NetBSD: patch-toolkit_xre_glxtest.cpp,v 1.1 2015/07/05 11:55:06 martin Exp $
+
+Fix libGL filename on NetBSD,
+see https://bugzilla.mozilla.org/show_bug.cgi?id=1180498
+
+--- toolkit/xre/glxtest.cpp.orig 2015-07-04 20:26:15.000000000 +0200
++++ toolkit/xre/glxtest.cpp 2015-07-04 20:26:15.000000000 +0200
+@@ -124,7 +124,7 @@ void glxtest()
+ fatal_error("The MOZ_AVOID_OPENGL_ALTOGETHER environment variable is defined");
+
+ ///// Open libGL and load needed symbols /////
+-#ifdef __OpenBSD__
++#if defined(__OpenBSD__) || defined(__NetBSD__)
+ #define LIBGL_FILENAME "libGL.so"
+ #else
+ #define LIBGL_FILENAME "libGL.so.1"
diff --git a/firefox-webrtc/patches/patch-toolkit_xre_nsEmbedFunctions.cpp b/firefox-webrtc/patches/patch-toolkit_xre_nsEmbedFunctions.cpp
new file mode 100644
index 0000000..22bc754
--- /dev/null
+++ b/firefox-webrtc/patches/patch-toolkit_xre_nsEmbedFunctions.cpp
@@ -0,0 +1,24 @@
+$NetBSD: patch-toolkit_xre_nsEmbedFunctions.cpp,v 1.6 2016/06/16 12:08:21 ryoon Exp $
+
+* Support Solaris
+
+--- toolkit/xre/nsEmbedFunctions.cpp.orig 2013-05-11 19:19:55.000000000 +0000
++++ toolkit/xre/nsEmbedFunctions.cpp
+@@ -239,7 +239,7 @@ XRE_SetRemoteExceptionHandler(const char
+ {
+ #if defined(XP_WIN) || defined(XP_MACOSX)
+ return CrashReporter::SetRemoteExceptionHandler(nsDependentCString(aPipe));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_SOLARIS)
+ return CrashReporter::SetRemoteExceptionHandler();
+ #else
+ # error "OOP crash reporter unsupported on this platform"
+@@ -351,7 +351,7 @@ XRE_InitChildProcess(int aArgc,
+ // Bug 684322 will add better visibility into this condition
+ NS_WARNING("Could not setup crash reporting\n");
+ }
+-# elif defined(OS_LINUX)
++# elif defined(OS_LINUX) || defined(OS_SOLARIS)
+ // on POSIX, |crashReporterArg| is "true" if crash reporting is
+ // enabled, false otherwise
+ if (0 != strcmp("false", crashReporterArg) &&
diff --git a/firefox-webrtc/patches/patch-xpcom_base_nscore.h b/firefox-webrtc/patches/patch-xpcom_base_nscore.h
new file mode 100644
index 0000000..def9c7e
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_base_nscore.h
@@ -0,0 +1,15 @@
+$NetBSD: patch-xpcom_base_nscore.h,v 1.3 2016/06/16 12:08:21 ryoon Exp $
+
+* Support llvm/clang
+
+--- xpcom/base/nscore.h.orig 2014-05-29 23:31:50.000000000 +0000
++++ xpcom/base/nscore.h
+@@ -114,7 +114,7 @@
+ * NS_HIDDEN_(int) NS_FASTCALL func2(char *foo);
+ */
+
+-#if defined(__i386__) && defined(__GNUC__)
++#if defined(__i386__) && defined(__GNUC__) && !(defined(__clang__) && __clang_major__ == 3 && __clang_minor__ == 4 && __clang_patchlevel__ == 0)
+ #define NS_FASTCALL __attribute__ ((regparm (3), stdcall))
+ #define NS_CONSTRUCTOR_FASTCALL __attribute__ ((regparm (3), stdcall))
+ #elif defined(XP_WIN) && !defined(_WIN64)
diff --git a/firefox-webrtc/patches/patch-xpcom_components_Module.h b/firefox-webrtc/patches/patch-xpcom_components_Module.h
new file mode 100644
index 0000000..8d5a487
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_components_Module.h
@@ -0,0 +1,16 @@
+$NetBSD: patch-xpcom_components_Module.h,v 1.3 2016/08/16 09:34:12 tnn Exp $
+
+Can't do relocation against extern protected symbol (pkg/50767)
+usr/bin/ld: ../../xpcom/components/nsComponentManager.o: relocation R_X86_64_PC32 against protected symbol `start_kPStaticModules_NSModule' can not be used when making a shared object
+
+--- xpcom/components/Module.h.orig 2016-06-01 04:11:44.000000000 +0000
++++ xpcom/components/Module.h
+@@ -125,7 +125,7 @@ struct Module
+ # define NSMODULE_SECTION __declspec(allocate(".kPStaticModules$M"), dllexport)
+ # elif defined(__GNUC__)
+ # if defined(__ELF__)
+-# define NSMODULE_SECTION __attribute__((section(".kPStaticModules"), visibility("protected")))
++# define NSMODULE_SECTION __attribute__((section(".kPStaticModules"), visibility("hidden")))
+ # elif defined(__MACH__)
+ # define NSMODULE_SECTION __attribute__((section("__DATA, .kPStaticModules"), visibility("default")))
+ # elif defined (_WIN32)
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_Makefile.in b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_Makefile.in
new file mode 100644
index 0000000..213da74
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_Makefile.in
@@ -0,0 +1,50 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_Makefile.in,v 1.3 2016/06/16 12:08:21 ryoon Exp $
+
+* Support NetBSD/sparc64
+
+--- xpcom/reflect/xptcall/md/unix/Makefile.in.orig 2015-08-24 21:53:22.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/Makefile.in
+@@ -42,6 +42,43 @@ ifeq ($(OS_ARCH),AIX)
+ CXXFLAGS := $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(CXXFLAGS))
+ endif
+
++######################################################################
++# SPARC
++######################################################################
++#
++# Linux/SPARC
++#
++ifeq ($(OS_ARCH),Linux)
++ifneq (,$(findstring sparc,$(OS_TEST)))
++ASFILES := xptcinvoke_asm_sparc_linux_GCC3.s xptcstubs_asm_sparc_solaris.s
++endif
++endif
++#
++# NetBSD/SPARC
++#
++ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc)
++ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
++endif
++#
++# OpenBSD/SPARC
++#
++ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDsparc)
++ASFILES := xptcinvoke_asm_sparc_openbsd.s xptcstubs_asm_sparc_openbsd.s
++endif
++#
++# OpenBSD/SPARC64
++#
++ifneq (,$(filter OpenBSDsparc64 FreeBSDsparc64,$(OS_ARCH)$(OS_TEST)))
++ASFILES := xptcinvoke_asm_sparc64_openbsd.s xptcstubs_asm_sparc64_openbsd.s
++endif
++#
++# NetBSD/SPARC64
++#
++ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc64)
++CPPSRCS := xptcinvoke_sparc64_netbsd.cpp xptcstubs_sparc64_openbsd.cpp
++ASFILES := xptcinvoke_asm_sparc64_openbsd.s xptcstubs_asm_sparc64_netbsd.s
++endif
++
+ include $(topsrcdir)/config/rules.mk
+
+ ifeq ($(OS_ARCH),Linux)
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build
new file mode 100644
index 0000000..a251f47
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build
@@ -0,0 +1,13 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_moz.build,v 1.5 2016/04/27 16:22:40 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/moz.build.orig 2016-04-15 16:57:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/moz.build
+@@ -9,7 +9,7 @@ if CONFIG['OS_ARCH'] == 'Darwin':
+ 'xptcinvoke_darwin.cpp',
+ 'xptcstubs_darwin.cpp',
+ ]
+- if CONFIG['OS_TEST'] == 'powerpc':
++ if CONFIG['OS_TEST'] == 'ppc':
+ SOURCES += [
+ '!xptcstubs_asm_ppc_darwin.s',
+ 'xptcinvoke_asm_ppc_rhapsody.s',
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp
new file mode 100644
index 0000000..19792af
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp
@@ -0,0 +1,527 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp,v 1.1 2014/11/26 14:56:28 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_arm_netbsd.cpp.orig 2014-11-13 22:50:21.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_arm_netbsd.cpp
+@@ -7,82 +7,92 @@
+
+ #include "xptcprivate.h"
+
+-// Remember that these 'words' are 32bit DWORDS
++#include "mozilla/Compiler.h"
+
+-static uint32_t
+-invoke_count_words(uint32_t paramCount, nsXPTCVariant* s)
++#ifndef __ARM_PCS_VFP
++
++/* This function copies a 64-bits word from dw to the given pointer in
++ * a buffer delimited by start and end, possibly wrapping around the
++ * buffer boundaries, and/or properly aligning the data at 64-bits word
++ * boundaries (for EABI).
++ * start and end are both assumed to be 64-bits aligned.
++ * Returns a pointer to the second 32-bits word copied (to accomodate
++ * the invoke_copy_to_stack loop).
++ */
++static uint32_t *
++copy_double_word(uint32_t *start, uint32_t *current, uint32_t *end, uint64_t *dw)
+ {
+- uint32_t result = 0;
+- for(uint32_t i = 0; i < paramCount; i++, s++)
+- {
+- if(s->IsPtrData())
+- {
+- result++;
+- continue;
+- }
+- switch(s->type)
+- {
+- case nsXPTType::T_I8 :
+- case nsXPTType::T_I16 :
+- case nsXPTType::T_I32 :
+- result++;
+- break;
+- case nsXPTType::T_I64 :
+- result+=2;
+- break;
+- case nsXPTType::T_U8 :
+- case nsXPTType::T_U16 :
+- case nsXPTType::T_U32 :
+- result++;
+- break;
+- case nsXPTType::T_U64 :
+- result+=2;
+- break;
+- case nsXPTType::T_FLOAT :
+- result++;
+- break;
+- case nsXPTType::T_DOUBLE :
+- result+=2;
+- break;
+- case nsXPTType::T_BOOL :
+- case nsXPTType::T_CHAR :
+- case nsXPTType::T_WCHAR :
+- result++;
+- break;
+- default:
+- // all the others are plain pointer types
+- result++;
+- break;
+- }
++#ifdef __ARM_EABI__
++ /* Aligning the pointer for EABI */
++ current = (uint32_t *)(((uint32_t)current + 7) & ~7);
++ /* Wrap when reaching the end of the buffer */
++ if (current == end) current = start;
++#else
++ /* On non-EABI, 64-bits values are not aligned and when we reach the end
++ * of the buffer, we need to write half of the data at the end, and the
++ * other half at the beginning. */
++ if (current == end - 1) {
++ *current = ((uint32_t*)dw)[0];
++ *start = ((uint32_t*)dw)[1];
++ return start;
+ }
+- return result;
++#endif
++
++ *((uint64_t*) current) = *dw;
++ return current + 1;
+ }
+
+-static void
+-invoke_copy_to_stack(uint32_t* d, uint32_t paramCount, nsXPTCVariant* s)
++/* See stack_space comment in NS_InvokeByIndex to see why this needs not to
++ * be static on DEBUG builds. */
++#ifndef DEBUG
++static
++#endif
++void
++invoke_copy_to_stack(uint32_t* stk, uint32_t *end,
++ uint32_t paramCount, nsXPTCVariant* s)
+ {
++ /* The stack buffer is 64-bits aligned. The end argument points to its end.
++ * The caller is assumed to create a stack buffer of at least four 32-bits
++ * words.
++ * We use the last three 32-bit words to store the values for r1, r2 and r3
++ * for the method call, i.e. the first words for arguments passing.
++ */
++ uint32_t *d = end - 3;
+ for(uint32_t i = 0; i < paramCount; i++, d++, s++)
+ {
++ /* Wrap when reaching the end of the stack buffer */
++ if (d == end) d = stk;
++ NS_ASSERTION(d >= stk && d < end,
++ "invoke_copy_to_stack is copying outside its given buffer");
+ if(s->IsPtrData())
+ {
+ *((void**)d) = s->ptr;
+ continue;
+ }
++ // According to the ARM EABI, integral types that are smaller than a word
++ // are to be sign/zero-extended to a full word and treated as 4-byte values.
++
+ switch(s->type)
+ {
+- case nsXPTType::T_I8 : *((int8_t*) d) = s->val.i8; break;
+- case nsXPTType::T_I16 : *((int16_t*) d) = s->val.i16; break;
++ case nsXPTType::T_I8 : *((int32_t*) d) = s->val.i8; break;
++ case nsXPTType::T_I16 : *((int32_t*) d) = s->val.i16; break;
+ case nsXPTType::T_I32 : *((int32_t*) d) = s->val.i32; break;
+- case nsXPTType::T_I64 : *((int64_t*) d) = s->val.i64; d++; break;
+- case nsXPTType::T_U8 : *((uint8_t*) d) = s->val.u8; break;
+- case nsXPTType::T_U16 : *((uint16_t*)d) = s->val.u16; break;
++ case nsXPTType::T_I64 :
++ d = copy_double_word(stk, d, end, (uint64_t *)&s->val.i64);
++ break;
++ case nsXPTType::T_U8 : *((uint32_t*)d) = s->val.u8; break;
++ case nsXPTType::T_U16 : *((uint32_t*)d) = s->val.u16; break;
+ case nsXPTType::T_U32 : *((uint32_t*)d) = s->val.u32; break;
+- case nsXPTType::T_U64 : *((uint64_t*)d) = s->val.u64; d++; break;
++ case nsXPTType::T_U64 :
++ d = copy_double_word(stk, d, end, (uint64_t *)&s->val.u64);
++ break;
+ case nsXPTType::T_FLOAT : *((float*) d) = s->val.f; break;
+- case nsXPTType::T_DOUBLE : *((double*) d) = s->val.d; d++; break;
+- case nsXPTType::T_BOOL : *((bool*) d) = s->val.b; break;
+- case nsXPTType::T_CHAR : *((char*) d) = s->val.c; break;
+- case nsXPTType::T_WCHAR : *((wchar_t*) d) = s->val.wc; break;
++ case nsXPTType::T_DOUBLE :
++ d = copy_double_word(stk, d, end, (uint64_t *)&s->val.d);
++ break;
++ case nsXPTType::T_BOOL : *((int32_t*) d) = s->val.b; break;
++ case nsXPTType::T_CHAR : *((int32_t*) d) = s->val.c; break;
++ case nsXPTType::T_WCHAR : *((int32_t*) d) = s->val.wc; break;
+ default:
+ // all the others are plain pointer types
+ *((void**)d) = s->val.p;
+@@ -91,47 +101,27 @@ invoke_copy_to_stack(uint32_t* d, uint32
+ }
+ }
+
+-extern "C"
+-struct my_params_struct {
+- nsISupports* that;
+- uint32_t Index;
+- uint32_t Count;
+- nsXPTCVariant* params;
+- uint32_t fn_count;
+- uint32_t fn_copy;
+-};
++typedef nsresult (*vtable_func)(nsISupports *, uint32_t, uint32_t, uint32_t);
+
+-XPTC_PUBLIC_API(nsresult)
+-XPTC_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
++EXPORT_XPCOM_API(nsresult)
++NS_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
+ uint32_t paramCount, nsXPTCVariant* params)
+ {
+- uint32_t result;
+- struct my_params_struct my_params;
+- my_params.that = that;
+- my_params.Index = methodIndex;
+- my_params.Count = paramCount;
+- my_params.params = params;
+- my_params.fn_copy = (uint32_t) &invoke_copy_to_stack;
+- my_params.fn_count = (uint32_t) &invoke_count_words;
+
+ /* This is to call a given method of class that.
+ * The parameters are in params, the number is in paramCount.
+ * The routine will issue calls to count the number of words
+ * required for argument passing and to copy the arguments to
+ * the stack.
+- * Since APCS passes the first 3 params in r1-r3, we need to
+- * load the first three words from the stack and correct the stack
+- * pointer (sp) in the appropriate way. This means:
+- *
+- * 1.) more than 3 arguments: load r1-r3, correct sp and remember No.
+- * of bytes left on the stack in r4
+- *
+- * 2.) <= 2 args: load r1-r3 (we won't be causing a stack overflow I hope),
+- * restore sp as if nothing had happened and set the marker r4 to zero.
+- *
+- * Afterwards sp will be restored using the value in r4 (which is not a temporary register
+- * and will be preserved by the function/method called according to APCS [ARM Procedure
+- * Calling Standard]).
++ * ACPS passes the first 3 params in r1-r3 (with exceptions for 64-bits
++ * arguments), and the remaining goes onto the stack.
++ * We allocate a buffer on the stack for a "worst case" estimate of how much
++ * stack might be needed for EABI, i.e. twice the number of parameters.
++ * The end of this buffer will be used to store r1 to r3, so that the start
++ * of the stack is the remaining parameters.
++ * The magic here is to call the method with "that" and three 32-bits
++ * arguments corresponding to r1-r3, so that the compiler generates the
++ * proper function call. The stack will also contain the remaining arguments.
+ *
+ * !!! IMPORTANT !!!
+ * This routine makes assumptions about the vtable layout of the c++ compiler. It's implemented
+@@ -139,43 +129,272 @@ XPTC_InvokeByIndex(nsISupports* that, ui
+ *
+ */
+
+- __asm__ __volatile__(
+- "ldr r1, [%1, #12] \n\t" /* prepare to call invoke_count_words */
+- "ldr ip, [%1, #16] \n\t" /* r0=paramCount, r1=params */
+- "ldr r0, [%1, #8] \n\t"
+- "mov lr, pc \n\t" /* call it... */
+- "mov pc, ip \n\t"
+- "mov r4, r0, lsl #2 \n\t" /* This is the amount of bytes needed. */
+- "sub sp, sp, r4 \n\t" /* use stack space for the args... */
+- "mov r0, sp \n\t" /* prepare a pointer an the stack */
+- "ldr r1, [%1, #8] \n\t" /* =paramCount */
+- "ldr r2, [%1, #12] \n\t" /* =params */
+- "ldr ip, [%1, #20] \n\t" /* =invoke_copy_to_stack */
+- "mov lr, pc \n\t" /* copy args to the stack like the */
+- "mov pc, ip \n\t" /* compiler would. */
+- "ldr r0, [%1] \n\t" /* =that */
+- "ldr r1, [r0, #0] \n\t" /* get that->vtable offset */
+- "ldr r2, [%1, #4] \n\t"
+- "add r2, r1, r2, lsl #3\n\t" /* a vtable_entry(x)=8 + (8 bytes * x) */
+- "add r2, r2, #8 \n\t" /* with this compilers */
+- "ldr r3, [r2] \n\t" /* get virtual offset from vtable */
+- "mov r3, r3, lsl #16 \n\t"
+- "add r0, r0, r3, asr #16\n\t"
+- "ldr ip, [r2, #4] \n\t" /* get method address from vtable */
+- "cmp r4, #12 \n\t" /* more than 3 arguments??? */
+- "ldmgtia sp!, {r1, r2, r3}\n\t" /* yes: load arguments for r1-r3 */
+- "subgt r4, r4, #12 \n\t" /* and correct the stack pointer */
+- "ldmleia sp, {r1, r2, r3}\n\t" /* no: load r1-r3 from stack */
+- "addle sp, sp, r4 \n\t" /* and restore stack pointer */
+- "movle r4, #0 \n\t" /* a mark for restoring sp */
+- "mov lr, pc \n\t" /* call mathod */
+- "mov pc, ip \n\t"
+- "add sp, sp, r4 \n\t" /* restore stack pointer */
+- "mov %0, r0 \n\t" /* the result... */
+- : "=r" (result)
+- : "r" (&my_params)
+- : "r0", "r1", "r2", "r3", "r4", "ip", "lr"
+- );
+-
+- return result;
++ vtable_func *vtable, func;
++ int base_size = (paramCount > 1) ? paramCount : 2;
++
++/* !!! IMPORTANT !!!
++ * On DEBUG builds, the NS_ASSERTION used in invoke_copy_to_stack needs to use
++ * the stack to pass the 5th argument to NS_DebugBreak. When invoke_copy_to_stack
++ * is inlined, this can result, depending on the compiler and flags, in the
++ * stack pointer not pointing at stack_space when the method is called at the
++ * end of this function. More generally, any function call requiring stack
++ * allocation of arguments is unsafe to be inlined in this function.
++ */
++ uint32_t *stack_space = (uint32_t *) __builtin_alloca(base_size * 8);
++
++ invoke_copy_to_stack(stack_space, &stack_space[base_size * 2],
++ paramCount, params);
++
++ vtable = *reinterpret_cast<vtable_func **>(that);
++ func = vtable[methodIndex];
++
++ return func(that, stack_space[base_size * 2 - 3],
++ stack_space[base_size * 2 - 2],
++ stack_space[base_size * 2 - 1]);
+ }
++
++#else /* __ARM_PCS_VFP */
++
++/* "Procedure Call Standard for the ARM Architecture" document, sections
++ * "5.5 Parameter Passing" and "6.1.2 Procedure Calling" contain all the
++ * needed information.
++ *
++ * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf
++ */
++
++#if defined(__thumb__) && !defined(__thumb2__)
++#error "Thumb1 is not supported"
++#endif
++
++#ifndef __ARMEL__
++#error "Only little endian compatibility was tested"
++#endif
++
++/*
++ * Allocation of integer function arguments initially to registers r1-r3
++ * and then to stack. Handling of 'this' argument which goes to r0 registers
++ * is handled separately and does not belong to these two inline functions.
++ *
++ * The doubleword arguments are allocated to even:odd
++ * register pairs or get aligned at 8-byte boundary on stack. The "holes"
++ * which may appear as a result of this realignment remain unused.
++ *
++ * 'ireg_args' - pointer to the current position in the buffer,
++ * corresponding to the register arguments
++ * 'stack_args' - pointer to the current position in the buffer,
++ * corresponding to the arguments on stack
++ * 'end' - pointer to the end of the registers argument
++ * buffer (it is guaranteed to be 8-bytes aligned)
++ */
++
++static inline void copy_word(uint32_t* &ireg_args,
++ uint32_t* &stack_args,
++ uint32_t* end,
++ uint32_t data)
++{
++ if (ireg_args < end) {
++ *ireg_args = data;
++ ireg_args++;
++ } else {
++ *stack_args = data;
++ stack_args++;
++ }
++}
++
++static inline void copy_dword(uint32_t* &ireg_args,
++ uint32_t* &stack_args,
++ uint32_t* end,
++ uint64_t data)
++{
++ if (ireg_args + 1 < end) {
++ if ((uint32_t)ireg_args & 4) {
++ ireg_args++;
++ }
++ *(uint64_t *)ireg_args = data;
++ ireg_args += 2;
++ } else {
++ if ((uint32_t)stack_args & 4) {
++ stack_args++;
++ }
++ *(uint64_t *)stack_args = data;
++ stack_args += 2;
++ }
++}
++
++/*
++ * Allocation of floating point arguments to VFP registers (s0-s15, d0-d7).
++ *
++ * Unlike integer registers allocation, "back-filling" needs to be
++ * supported. For example, the third floating point argument in the
++ * following function is going to be allocated to s1 register, back-filling
++ * the "hole":
++ * void f(float s0, double d1, float s1)
++ *
++ * Refer to the "Procedure Call Standard for the ARM Architecture" document
++ * for more details.
++ *
++ * 'vfp_s_args' - pointer to the current position in the buffer with
++ * the next unallocated single precision register
++ * 'vfp_d_args' - pointer to the current position in the buffer with
++ * the next unallocated double precision register,
++ * it has the same value as 'vfp_s_args' when back-filling
++ * is not used
++ * 'end' - pointer to the end of the vfp registers argument
++ * buffer (it is guaranteed to be 8-bytes aligned)
++ *
++ * Mozilla bugtracker has a test program attached which be used for
++ * experimenting with VFP registers allocation code and testing its
++ * correctness:
++ * https://bugzilla.mozilla.org/show_bug.cgi?id=601914#c19
++ */
++
++static inline bool copy_vfp_single(float* &vfp_s_args, double* &vfp_d_args,
++ float* end, float data)
++{
++ if (vfp_s_args >= end)
++ return false;
++
++ *vfp_s_args = data;
++ vfp_s_args++;
++ if (vfp_s_args < (float *)vfp_d_args) {
++ // It was the case of back-filling, now the next free single precision
++ // register should overlap with the next free double precision register
++ vfp_s_args = (float *)vfp_d_args;
++ } else if (vfp_s_args > (float *)vfp_d_args) {
++ // also update the pointer to the next free double precision register
++ vfp_d_args++;
++ }
++ return true;
++}
++
++static inline bool copy_vfp_double(float* &vfp_s_args, double* &vfp_d_args,
++ float* end, double data)
++{
++ if (vfp_d_args >= (double *)end) {
++ // The back-filling continues only so long as no VFP CPRC has been
++ // allocated to a slot on the stack. Basically no VFP registers can
++ // be allocated after this point.
++ vfp_s_args = end;
++ return false;
++ }
++
++ if (vfp_s_args == (float *)vfp_d_args) {
++ // also update the pointer to the next free single precision register
++ vfp_s_args += 2;
++ }
++ *vfp_d_args = data;
++ vfp_d_args++;
++ return true;
++}
++
++static void
++invoke_copy_to_stack(uint32_t* stk, uint32_t *end,
++ uint32_t paramCount, nsXPTCVariant* s)
++{
++ uint32_t *ireg_args = end - 3;
++ float *vfp_s_args = (float *)end;
++ double *vfp_d_args = (double *)end;
++ float *vfp_end = vfp_s_args + 16;
++
++ for (uint32_t i = 0; i < paramCount; i++, s++) {
++ if (s->IsPtrData()) {
++ copy_word(ireg_args, stk, end, (uint32_t)s->ptr);
++ continue;
++ }
++ // According to the ARM EABI, integral types that are smaller than a word
++ // are to be sign/zero-extended to a full word and treated as 4-byte values
++ switch (s->type)
++ {
++ case nsXPTType::T_FLOAT:
++ if (!copy_vfp_single(vfp_s_args, vfp_d_args, vfp_end, s->val.f)) {
++ copy_word(end, stk, end, reinterpret_cast<uint32_t&>(s->val.f));
++ }
++ break;
++ case nsXPTType::T_DOUBLE:
++ if (!copy_vfp_double(vfp_s_args, vfp_d_args, vfp_end, s->val.d)) {
++ copy_dword(end, stk, end, reinterpret_cast<uint64_t&>(s->val.d));
++ }
++ break;
++ case nsXPTType::T_I8: copy_word(ireg_args, stk, end, s->val.i8); break;
++ case nsXPTType::T_I16: copy_word(ireg_args, stk, end, s->val.i16); break;
++ case nsXPTType::T_I32: copy_word(ireg_args, stk, end, s->val.i32); break;
++ case nsXPTType::T_I64: copy_dword(ireg_args, stk, end, s->val.i64); break;
++ case nsXPTType::T_U8: copy_word(ireg_args, stk, end, s->val.u8); break;
++ case nsXPTType::T_U16: copy_word(ireg_args, stk, end, s->val.u16); break;
++ case nsXPTType::T_U32: copy_word(ireg_args, stk, end, s->val.u32); break;
++ case nsXPTType::T_U64: copy_dword(ireg_args, stk, end, s->val.u64); break;
++ case nsXPTType::T_BOOL: copy_word(ireg_args, stk, end, s->val.b); break;
++ case nsXPTType::T_CHAR: copy_word(ireg_args, stk, end, s->val.c); break;
++ case nsXPTType::T_WCHAR: copy_word(ireg_args, stk, end, s->val.wc); break;
++ default:
++ // all the others are plain pointer types
++ copy_word(ireg_args, stk, end, reinterpret_cast<uint32_t>(s->val.p));
++ break;
++ }
++ }
++}
++
++typedef uint32_t (*vtable_func)(nsISupports *, uint32_t, uint32_t, uint32_t);
++
++EXPORT_XPCOM_API(nsresult)
++NS_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
++ uint32_t paramCount, nsXPTCVariant* params)
++{
++ vtable_func *vtable = *reinterpret_cast<vtable_func **>(that);
++ vtable_func func = vtable[methodIndex];
++ // 'register uint32_t result asm("r0")' could be used here, but it does not
++ // seem to be reliable in all cases: http://gcc.gnu.org/PR46164
++ nsresult result;
++ asm (
++ "mov r3, sp\n"
++ "mov %[stack_space_size], %[param_count_plus_2], lsl #3\n"
++ "tst r3, #4\n" /* check stack alignment */
++
++ "add %[stack_space_size], #(4 * 16)\n" /* space for VFP registers */
++ "mov r3, %[params]\n"
++
++ "it ne\n"
++ "addne %[stack_space_size], %[stack_space_size], #4\n"
++ "sub r0, sp, %[stack_space_size]\n" /* allocate space on stack */
++
++ "sub r2, %[param_count_plus_2], #2\n"
++ "mov sp, r0\n"
++
++ "add r1, r0, %[param_count_plus_2], lsl #3\n"
++ "blx %[invoke_copy_to_stack]\n"
++
++ "add ip, sp, %[param_count_plus_2], lsl #3\n"
++ "mov r0, %[that]\n"
++ "ldmdb ip, {r1, r2, r3}\n"
++ "vldm ip, {d0, d1, d2, d3, d4, d5, d6, d7}\n"
++ "blx %[func]\n"
++
++ "add sp, sp, %[stack_space_size]\n" /* cleanup stack */
++ "mov %[stack_space_size], r0\n" /* it's actually 'result' variable */
++ : [stack_space_size] "=&r" (result)
++ : [func] "r" (func),
++ [that] "r" (that),
++ [params] "r" (params),
++ [param_count_plus_2] "r" (paramCount + 2),
++ [invoke_copy_to_stack] "r" (invoke_copy_to_stack)
++ : "cc", "memory",
++ // Mark all the scratch registers as clobbered because they may be
++ // modified by the functions, called from this inline assembly block
++ "r0", "r1", "r2", "r3", "ip", "lr",
++ "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7",
++ // Also unconditionally mark d16-d31 registers as clobbered even though
++ // they actually don't exist in vfpv2 and vfpv3-d16 variants. There is
++ // no way to identify VFP variant using preprocessor at the momemnt
++ // (see http://gcc.gnu.org/PR46128 for more details), but fortunately
++ // current versions of gcc do not seem to complain about these registers
++ // even when this code is compiled with '-mfpu=vfpv3-d16' option.
++ // If gcc becomes more strict in the future and/or provides a way to
++ // identify VFP variant, the following d16-d31 registers list needs
++ // to be wrapped into some #ifdef
++ "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23",
++ "d24", "d25", "d26", "d27", "d28", "d29", "d30", "d31"
++ );
++ return result;
++}
++
++#endif
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S
new file mode 100644
index 0000000..c6331e6
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S
@@ -0,0 +1,52 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S,v 1.1 2014/10/15 13:43:32 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_mips.S.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_mips.S
+@@ -16,6 +16,47 @@
+ #include <sys/asm.h>
+ #endif
+
++#ifdef __NetBSD__
++# include <machine/regdef.h>
++# include <machine/asm.h>
++# ifndef fp
++# define fp s8
++# endif
++# ifndef PTRLOG
++# if SZREG == 4
++# define PTRLOG 2
++# else
++# define PTRLOG 3
++# endif
++# endif
++# ifndef SETUP_GP
++# if defined(__mips_o32)
++# define SETUP_GP \
++ .set push; \
++ .set noreorder; \
++ .cpload t9; \
++ .set pop
++# define SAVE_GP(x) \
++ .cprestore x
++# else
++# define SETUP_GP
++# define SAVE_GP(x)
++# endif
++# endif
++# ifndef ALSZ
++# if defined(__mips_n32) || defined(__mips_n64)
++# define ALSZ 15
++# define ALMASK ~15
++# else
++# define ALSZ 7
++# define ALMASK ~7
++# endif
++# endif
++#else
++# include <sys/regdef.h>
++# include <sys/asm.h>
++#endif
++
+ # NARGSAVE is the argument space in the callers frame, including extra
+ # 'shadowed' space for the argument registers. The minimum of 4
+ # argument slots is sometimes predefined in the header files.
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s
new file mode 100644
index 0000000..3556e49
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s
@@ -0,0 +1,25 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s,v 1.1 2014/10/15 13:43:32 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_ppc_netbsd.s.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_ppc_netbsd.s
+@@ -20,15 +20,15 @@
+
+ .section ".text"
+ .align 2
+- .globl XPTC_InvokeByIndex
+- .type XPTC_InvokeByIndex,@function
++ .globl NS_InvokeByIndex_P
++ .type NS_InvokeByIndex_P,@function
+
+ #
+-# XPTC_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
+-# uint32_t paramCount, nsXPTCVariant* params)
++# NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex,
++# PRUint32 paramCount, nsXPTCVariant* params)
+ #
+
+-XPTC_InvokeByIndex:
++NS_InvokeByIndex_P:
+ stwu sp,-32(sp) # setup standard stack frame
+ mflr r0 # save LR
+ stw r3,8(sp) # r3 <= that
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp
new file mode 100644
index 0000000..86c3bee
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp,v 1.1 2014/10/15 13:43:32 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_gcc_x86_unix.cpp.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_gcc_x86_unix.cpp
+@@ -9,7 +9,7 @@
+ #include "xptc_gcc_x86_unix.h"
+
+ extern "C" {
+-static void ATTRIBUTE_USED __attribute__ ((regparm(3)))
++void ATTRIBUTE_USED __attribute__ ((regparm(3)))
+ invoke_copy_to_stack(uint32_t paramCount, nsXPTCVariant* s, uint32_t* d)
+ {
+ for(uint32_t i = paramCount; i >0; i--, d++, s++)
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp
new file mode 100644
index 0000000..73287ae
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp
@@ -0,0 +1,75 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp,v 1.1 2014/10/15 13:43:32 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_netbsd_m68k.cpp.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_netbsd_m68k.cpp
+@@ -100,6 +100,15 @@ extern "C" {
+ }
+ }
+
++/*
++ * SYMBOL PREFIX must be "_" for aout symbols and "" for ELF
++ */
++#ifndef __ELF__
++#define SYMBOLPREFIX "_"
++#else
++#define SYMBOLPREFIX
++#endif
++
+ XPTC_PUBLIC_API(nsresult)
+ XPTC_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
+ uint32_t paramCount, nsXPTCVariant* params)
+@@ -107,30 +116,30 @@ XPTC_InvokeByIndex(nsISupports* that, ui
+ uint32_t result;
+
+ __asm__ __volatile__(
+- "movl %4, sp@-\n\t"
+- "movl %3, sp@-\n\t"
+- "jbsr _invoke_count_words\n\t" /* count words */
+- "addql #8, sp\n\t"
+- "lsll #2, d0\n\t" /* *= 4 */
+- "movl sp, a2\n\t" /* save original sp */
+- "subl d0, sp\n\t" /* make room for params */
+- "movl sp, a0\n\t"
+- "movl %4, sp@-\n\t"
+- "movl %3, sp@-\n\t"
+- "movl a0, sp@-\n\t"
+- "jbsr _invoke_copy_to_stack\n\t" /* copy params */
+- "addl #12, sp\n\t"
+- "movl %1, a0\n\t"
+- "movl a0@, a1\n\t"
+- "movl %2, d0\n\t" /* function index */
+- "movl a0, d1\n\t"
+- "movw a1@(8,d0:l:8), a0\n\t"
+- "addl a0, d1\n\t"
+- "movl a1@(12,d0:l:8), a1\n\t"
+- "movl d1, sp@-\n\t"
+- "jbsr a1@\n\t"
+- "movl a2, sp\n\t" /* restore original sp */
+- "movl d0, %0\n\t"
++ "movl %4, %%sp@-\n\t"
++ "movl %3, %%sp@-\n\t"
++ "jbsr "SYMBOLPREFIX"invoke_count_words\n\t" /* count words */
++ "addql #8, %%sp\n\t"
++ "lsll #2, %%d0\n\t" /* *= 4 */
++ "movl %%sp, %%a2\n\t" /* save original sp */
++ "subl %%d0, %%sp\n\t" /* make room for params */
++ "movl %%sp, %%a0\n\t"
++ "movl %4, %%sp@-\n\t"
++ "movl %3, %%sp@-\n\t"
++ "movl %%a0, %%sp@-\n\t"
++ "jbsr "SYMBOLPREFIX"invoke_copy_to_stack\n\t" /* copy params */
++ "addl #12, %%sp\n\t"
++ "movl %1, %%a0\n\t"
++ "movl %%a0@, %%a1\n\t"
++ "movl %2, %%d0\n\t" /* function index */
++ "movl %%a0, %%d1\n\t"
++ "movw %%a1@(8,%%d0:l:8), %%a0\n\t"
++ "addl %%a0, %%d1\n\t"
++ "movl %%a1@(12,%%d0:l:8), %%a1\n\t"
++ "movl %%d1, %%sp@-\n\t"
++ "jbsr %%a1@\n\t"
++ "movl %%a2, %%sp\n\t" /* restore original sp */
++ "movl %%d0, %0\n\t"
+ : "=g" (result) /* %0 */
+ : "g" (that), /* %1 */
+ "g" (methodIndex), /* %2 */
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp
new file mode 100644
index 0000000..3c8a6c3
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp
@@ -0,0 +1,47 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp,v 1.1 2014/10/15 13:43:32 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_netbsd.cpp.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_netbsd.cpp
+@@ -5,9 +5,9 @@
+
+ // Platform specific code to invoke XPCOM methods on native objects
+
+-// The purpose of XPTC_InvokeByIndex() is to map a platform
++// The purpose of NS_InvokeByIndex_P() is to map a platform
+ // indepenpent call to the platform ABI. To do that,
+-// XPTC_InvokeByIndex() has to determine the method to call via vtable
++// NS_InvokeByIndex_P() has to determine the method to call via vtable
+ // access. The parameters for the method are read from the
+ // nsXPTCVariant* and prepared for the native ABI. For the Linux/PPC
+ // ABI this means that the first 8 integral and floating point
+@@ -72,8 +72,10 @@ invoke_copy_to_stack(uint32_t* d,
+ if ((uint32_t) d & 4) d++; // doubles are 8-byte aligned on stack
+ *((double*) d) = s->val.d;
+ d += 2;
++#if __GXX_ABI_VERSION < 100
+ if (gpr < GPR_COUNT)
+ gpr += 2;
++#endif
+ }
+ }
+ else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) {
+@@ -82,8 +84,10 @@ invoke_copy_to_stack(uint32_t* d,
+ else {
+ *((float*) d) = s->val.f;
+ d += 1;
++#if __GXX_ABI_VERSION < 100
+ if (gpr < GPR_COUNT)
+ gpr += 1;
++#endif
+ }
+ }
+ else if (!s->IsPtrData() && (s->type == nsXPTType::T_I64
+@@ -110,6 +114,6 @@ invoke_copy_to_stack(uint32_t* d,
+ }
+
+ extern "C"
+-XPTC_PUBLIC_API(nsresult)
+-XPTC_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
++EXPORT_XPCOM_API(nsresult)
++NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex,
+ uint32_t paramCount, nsXPTCVariant* params);
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp
new file mode 100644
index 0000000..4f1d2a4
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp
@@ -0,0 +1,89 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp,v 1.1 2014/10/15 13:43:32 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_sparc64_netbsd.cpp.orig 2014-10-14 18:49:14.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_sparc64_netbsd.cpp
+@@ -0,0 +1,84 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
++ *
++ * The contents of this file are subject to the Netscape Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 1998 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ */
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++#include "xptcprivate.h"
++
++#if !defined(__sparc64__) && !defined(_LP64)
++#error "This code is for Sparc64 only"
++#endif
++
++extern "C" PRUint32
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ /*
++ We need to copy the parameters for this function to locals and use them
++ from there since the parameters occupy the same stack space as the stack
++ we're trying to populate.
++ */
++ PRUint64 *l_d = d;
++ nsXPTCVariant *l_s = s;
++ PRUint64 l_paramCount = paramCount;
++ PRUint64 regCount = 0; // return the number of registers to load from the stack
++
++ for(PRUint64 i = 0; i < l_paramCount; i++, l_d++, l_s++)
++ {
++ if (regCount < 5) regCount++;
++
++ if (l_s->IsPtrData())
++ {
++ *l_d = (PRUint64)l_s->ptr;
++ continue;
++ }
++ switch (l_s->type)
++ {
++ case nsXPTType::T_I8 : *((PRInt64*)l_d) = l_s->val.i8; break;
++ case nsXPTType::T_I16 : *((PRInt64*)l_d) = l_s->val.i16; break;
++ case nsXPTType::T_I32 : *((PRInt64*)l_d) = l_s->val.i32; break;
++ case nsXPTType::T_I64 : *((PRInt64*)l_d) = l_s->val.i64; break;
++
++ case nsXPTType::T_U8 : *((PRUint64*)l_d) = l_s->val.u8; break;
++ case nsXPTType::T_U16 : *((PRUint64*)l_d) = l_s->val.u16; break;
++ case nsXPTType::T_U32 : *((PRUint64*)l_d) = l_s->val.u32; break;
++ case nsXPTType::T_U64 : *((PRUint64*)l_d) = l_s->val.u64; break;
++
++ /* in the case of floats, we want to put the bits in to the
++ 64bit space right justified... floats in the paramter array on
++ sparcv9 use odd numbered registers.. %f1, %f3, so we have to skip
++ the space that would be occupied by %f0, %f2, etc.
++ */
++ case nsXPTType::T_FLOAT : *(((float*)l_d) + 1) = l_s->val.f; break;
++ case nsXPTType::T_DOUBLE: *((double*)l_d) = l_s->val.d; break;
++ case nsXPTType::T_BOOL : *((PRInt64*)l_d) = l_s->val.b; break;
++ case nsXPTType::T_CHAR : *((PRUint64*)l_d) = l_s->val.c; break;
++ case nsXPTType::T_WCHAR : *((PRInt64*)l_d) = l_s->val.wc; break;
++
++ default:
++ // all the others are plain pointer types
++ *((void**)l_d) = l_s->val.p;
++ break;
++ }
++ }
++
++ return regCount;
++}
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp
new file mode 100644
index 0000000..d1fb41d
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp
@@ -0,0 +1,217 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp,v 1.4 2014/12/02 12:14:40 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_arm_netbsd.cpp.orig 2014-11-26 12:30:27.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_arm_netbsd.cpp
+@@ -6,15 +6,32 @@
+ /* Implement shared vtbl methods. */
+
+ #include "xptcprivate.h"
++#include "xptiprivate.h"
+
+-nsresult ATTRIBUTE_USED
++/* Specify explicitly a symbol for this function, don't try to guess the c++ mangled symbol. */
++static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32_t methodIndex, uint32_t* args) asm("_PrepareAndDispatch")
++ATTRIBUTE_USED;
++
++#ifdef __ARM_EABI__
++#define DOUBLEWORD_ALIGN(p) ((uint32_t *)((((uint32_t)(p)) + 7) & 0xfffffff8))
++#else
++#define DOUBLEWORD_ALIGN(p) (p)
++#endif
++
++// Apple's iOS toolchain is lame and does not support .cfi directives.
++#ifdef __APPLE__
++#define CFI(str)
++#else
++#define CFI(str) str
++#endif
++
++static nsresult
+ PrepareAndDispatch(nsXPTCStubBase* self, uint32_t methodIndex, uint32_t* args)
+ {
+ #define PARAM_BUFFER_COUNT 16
+
+ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
+ nsXPTCMiniVariant* dispatchParams = nullptr;
+- nsIInterfaceInfo* iface_info = nullptr;
+ const nsXPTMethodInfo* info;
+ uint8_t paramCount;
+ uint8_t i;
+@@ -22,12 +39,7 @@ PrepareAndDispatch(nsXPTCStubBase* self,
+
+ NS_ASSERTION(self,"no self");
+
+- self->GetInterfaceInfo(&iface_info);
+- NS_ASSERTION(iface_info,"no interface info");
+-
+- iface_info->GetMethodInfo(uint16_t(methodIndex), &info);
+- NS_ASSERTION(info,"no interface info");
+-
++ self->mEntry->GetMethodInfo(uint16_t(methodIndex), &info);
+ paramCount = info->GetParamCount();
+
+ // setup variant array pointer
+@@ -55,13 +67,16 @@ PrepareAndDispatch(nsXPTCStubBase* self,
+ case nsXPTType::T_I8 : dp->val.i8 = *((int8_t*) ap); break;
+ case nsXPTType::T_I16 : dp->val.i16 = *((int16_t*) ap); break;
+ case nsXPTType::T_I32 : dp->val.i32 = *((int32_t*) ap); break;
+- case nsXPTType::T_I64 : dp->val.i64 = *((int64_t*) ap); ap++; break;
++ case nsXPTType::T_I64 : ap = DOUBLEWORD_ALIGN(ap);
++ dp->val.i64 = *((int64_t*) ap); ap++; break;
+ case nsXPTType::T_U8 : dp->val.u8 = *((uint8_t*) ap); break;
+ case nsXPTType::T_U16 : dp->val.u16 = *((uint16_t*)ap); break;
+ case nsXPTType::T_U32 : dp->val.u32 = *((uint32_t*)ap); break;
+- case nsXPTType::T_U64 : dp->val.u64 = *((uint64_t*)ap); ap++; break;
++ case nsXPTType::T_U64 : ap = DOUBLEWORD_ALIGN(ap);
++ dp->val.u64 = *((uint64_t*)ap); ap++; break;
+ case nsXPTType::T_FLOAT : dp->val.f = *((float*) ap); break;
+- case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); ap++; break;
++ case nsXPTType::T_DOUBLE : ap = DOUBLEWORD_ALIGN(ap);
++ dp->val.d = *((double*) ap); ap++; break;
+ case nsXPTType::T_BOOL : dp->val.b = *((bool*) ap); break;
+ case nsXPTType::T_CHAR : dp->val.c = *((char*) ap); break;
+ case nsXPTType::T_WCHAR : dp->val.wc = *((wchar_t*) ap); break;
+@@ -71,9 +86,7 @@ PrepareAndDispatch(nsXPTCStubBase* self,
+ }
+ }
+
+- result = self->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+-
+- NS_RELEASE(iface_info);
++ result = self->mOuter->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+
+ if(dispatchParams != paramBuffer)
+ delete [] dispatchParams;
+@@ -82,26 +95,114 @@ PrepareAndDispatch(nsXPTCStubBase* self,
+ }
+
+ /*
+- * These stubs move just move the values passed in registers onto the stack,
+- * so they are contiguous with values passed on the stack, and then calls
+- * PrepareAndDispatch() to do the dirty work.
++ * This is our shared stub.
++ *
++ * r0 = Self.
++ *
++ * The Rules:
++ * We pass an (undefined) number of arguments into this function.
++ * The first 3 C++ arguments are in r1 - r3, the rest are built
++ * by the calling function on the stack.
++ *
++ * We are allowed to corrupt r0 - r3, ip, and lr.
++ *
++ * Other Info:
++ * We pass the stub number in using `ip'.
++ *
++ * Implementation:
++ * - We save r1 to r3 inclusive onto the stack, which will be
++ * immediately below the caller saved arguments.
++ * - setup r2 (PrepareAndDispatch's args pointer) to point at
++ * the base of all these arguments
++ * - Save LR (for the return address)
++ * - Set r1 (PrepareAndDispatch's methodindex argument) from ip
++ * - r0 is passed through (self)
++ * - Call PrepareAndDispatch
++ * - When the call returns, we return by loading the PC off the
++ * stack, and undoing the stack (one instruction)!
++ *
+ */
++__asm__ ("\n"
++ ".text\n"
++ ".align 2\n"
++ "SharedStub:\n"
++ CFI(".cfi_startproc\n")
++ "stmfd sp!, {r1, r2, r3}\n"
++ CFI(".cfi_def_cfa_offset 12\n")
++ CFI(".cfi_offset r3, -4\n")
++ CFI(".cfi_offset r2, -8\n")
++ CFI(".cfi_offset r1, -12\n")
++ "mov r2, sp\n"
++ "str lr, [sp, #-4]!\n"
++ CFI(".cfi_def_cfa_offset 16\n")
++ CFI(".cfi_offset lr, -16\n")
++ "mov r1, ip\n"
++ "bl _PrepareAndDispatch\n"
++ "ldr pc, [sp], #16\n"
++ CFI(".cfi_endproc\n"));
++
++/*
++ * Create sets of stubs to call the SharedStub.
++ * We don't touch the stack here, nor any registers, other than IP.
++ * IP is defined to be corruptable by a called function, so we are
++ * safe to use it.
++ *
++ * This will work with or without optimisation.
++ */
++
++/*
++ * Note : As G++3 ABI contains the length of the functionname in the
++ * mangled name, it is difficult to get a generic assembler mechanism like
++ * in the G++ 2.95 case.
++ * Create names would be like :
++ * _ZN14nsXPTCStubBase5Stub9Ev
++ * _ZN14nsXPTCStubBase6Stub13Ev
++ * _ZN14nsXPTCStubBase7Stub144Ev
++ * Use the assembler directives to get the names right...
++ */
++
++#define STUB_ENTRY(n) \
++ __asm__( \
++ ".section \".text\"\n" \
++" .align 2\n" \
++" .iflt ("#n" - 10)\n" \
++" .globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
++" .type _ZN14nsXPTCStubBase5Stub"#n"Ev,#function\n" \
++"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n" \
++" .else\n" \
++" .iflt ("#n" - 100)\n" \
++" .globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
++" .type _ZN14nsXPTCStubBase6Stub"#n"Ev,#function\n" \
++"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n" \
++" .else\n" \
++" .iflt ("#n" - 1000)\n" \
++" .globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
++" .type _ZN14nsXPTCStubBase7Stub"#n"Ev,#function\n" \
++"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n" \
++" .else\n" \
++" .err \"stub number "#n"> 1000 not yet supported\"\n" \
++" .endif\n" \
++" .endif\n" \
++" .endif\n" \
++" mov ip, #"#n"\n" \
++" b SharedStub\n\t");
++
++#if 0
++/*
++ * This part is left in as comment : this is how the method definition
++ * should look like.
++ */
++
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n () \
++{ \
++ __asm__ ( \
++" mov ip, #"#n"\n" \
++" b SharedStub\n\t"); \
++ return 0; /* avoid warnings */ \
++}
++#endif
+
+-#define STUB_ENTRY(n) \
+-__asm__( \
+- ".global _Stub"#n"__14nsXPTCStubBase\n\t" \
+-"_Stub"#n"__14nsXPTCStubBase:\n\t" \
+- "stmfd sp!, {r1, r2, r3} \n\t" \
+- "mov ip, sp \n\t" \
+- "stmfd sp!, {fp, ip, lr, pc} \n\t" \
+- "sub fp, ip, #4 \n\t" \
+- "mov r1, #"#n" \n\t" /* = methodIndex */ \
+- "add r2, sp, #16 \n\t" \
+- "bl _PrepareAndDispatch__FP14nsXPTCStubBaseUiPUi \n\t" \
+- "ldmea fp, {fp, sp, lr} \n\t" \
+- "add sp, sp, #12 \n\t" \
+- "mov pc, lr \n\t" \
+-);
+
+ #define SENTINEL_ENTRY(n) \
+ nsresult nsXPTCStubBase::Sentinel##n() \
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S
new file mode 100644
index 0000000..ca0636d
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S
@@ -0,0 +1,52 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S,v 1.1 2014/10/15 13:43:32 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_asm_mips.S.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_asm_mips.S
+@@ -14,6 +14,47 @@
+ #include <sys/asm.h>
+ #endif
+
++#ifdef __NetBSD__
++# include <machine/regdef.h>
++# include <machine/asm.h>
++# ifndef fp
++# define fp s8
++# endif
++# ifndef PTRLOG
++# if SZREG == 4
++# define PTRLOG 2
++# else
++# define PTRLOG 3
++# endif
++# endif
++# ifndef SETUP_GP
++# if defined(__mips_o32)
++# define SETUP_GP \
++ .set push; \
++ .set noreorder; \
++ .cpload t9; \
++ .set pop
++# define SAVE_GP(x) \
++ .cprestore x
++# else
++# define SETUP_GP
++# define SAVE_GP(x)
++# endif
++# endif
++# ifndef ALSZ
++# if defined(__mips_n32) || defined(__mips_n64)
++# define ALSZ 15
++# define ALMASK ~15
++# else
++# define ALSZ 7
++# define ALMASK ~7
++# endif
++# endif
++#else
++# include <sys/regdef.h>
++# include <sys/asm.h>
++#endif
++
+ # NARGSAVE is the argument space in the callers frame, including extra
+ # 'shadowed' space for the argument registers. The minimum of 4
+ # argument slots is sometimes predefined in the header files.
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s
new file mode 100644
index 0000000..32e6044
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s
@@ -0,0 +1,71 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s,v 1.1 2014/10/15 13:43:32 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_asm_sparc64_netbsd.s.orig 2014-10-14 18:49:14.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_asm_sparc64_netbsd.s
+@@ -0,0 +1,66 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
++ *
++ * The contents of this file are subject to the Netscape Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 1999 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ */
++
++ .global SharedStub
++
++/*
++ in the frame for the function that called SharedStub are the
++ rest of the parameters we need
++
++*/
++
++SharedStub:
++! we don't create a new frame yet, but work within the frame of the calling
++! function to give ourselves the other parameters we want
++
++ mov %o0, %o1 ! shuffle the index up to 2nd place
++ mov %i0, %o0 ! the original 'this'
++ add %fp, 0x7ff + 136, %o2 ! previous stack top adjusted to the first argument slot (beyond 'this')
++
++! save off the original incoming parameters that arrived in
++! registers, the ABI guarantees the space for us to do this
++ stx %i1, [%fp + 0x7ff + 136]
++ stx %i2, [%fp + 0x7ff + 144]
++ stx %i3, [%fp + 0x7ff + 152]
++ stx %i4, [%fp + 0x7ff + 160]
++ stx %i5, [%fp + 0x7ff + 168]
++! now we can build our own stack frame
++ save %sp,-(128 + 64),%sp ! room for the register window and
++ ! struct pointer, rounded up to 0 % 64
++! our function now appears to have been called
++! as SharedStub(nsISupports* that, PRUint32 index, PRUint32* args)
++! so we can just copy these through
++
++ mov %i0, %o0
++ mov %i1, %o1
++ mov %i2, %o2
++ call PrepareAndDispatch
++ nop
++ mov %o0,%i0 ! propagate return value
++ b .LL1
++ nop
++.LL1:
++ ret
++ restore
++
++ .size SharedStub, .-SharedStub
++ .type SharedStub, #function
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp
new file mode 100644
index 0000000..98b041c
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp,v 1.1 2014/10/15 13:43:32 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_gcc_x86_unix.cpp.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_gcc_x86_unix.cpp
+@@ -10,7 +10,7 @@
+ #include "xptc_gcc_x86_unix.h"
+
+ extern "C" {
+-static nsresult ATTRIBUTE_USED
++nsresult ATTRIBUTE_USED
+ __attribute__ ((regparm (3)))
+ PrepareAndDispatch(uint32_t methodIndex, nsXPTCStubBase* self, uint32_t* args)
+ {
diff --git a/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp
new file mode 100644
index 0000000..f9fdcc6
--- /dev/null
+++ b/firefox-webrtc/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp
@@ -0,0 +1,41 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp,v 1.1 2014/10/15 13:43:32 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_netbsd_m68k.cpp.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_netbsd_m68k.cpp
+@@ -91,17 +91,27 @@ extern "C" {
+ }
+ }
+
++/*
++ * Beware: use % instead of %% for register identifiers in a preprocessor macro
++ * SYMBOL PREFIX must be "_" for aout and "" for ELF
++ */
++#ifndef __ELF__
++#define SYMBOLPREFIX "_"
++#else
++#define SYMBOLPREFIX
++#endif
++
+ #define STUB_ENTRY(n) \
+ __asm__( \
+- ".global _Stub"#n"__14nsXPTCStubBase\n\t" \
+-"_Stub"#n"__14nsXPTCStubBase:\n\t" \
+- "link a6,#0 \n\t" \
+- "lea a6@(12), a0 \n\t" /* pointer to args */ \
+- "movl a0, sp@- \n\t" \
+- "movl #"#n", sp@- \n\t" /* method index */ \
+- "movl a6@(8), sp@- \n\t" /* this */ \
+- "jbsr _PrepareAndDispatch \n\t" \
+- "unlk a6 \n\t" \
++ ".global "SYMBOLPREFIX"Stub"#n"__14nsXPTCStubBase\n\t" \
++SYMBOLPREFIX"Stub"#n"__14nsXPTCStubBase:\n\t" \
++ "link %a6,#0 \n\t" \
++ "lea %a6@(12), %a0 \n\t" /* pointer to args */ \
++ "movl %a0, %sp@- \n\t" \
++ "movl #"#n", %sp@- \n\t" /* method index */ \
++ "movl %a6@(8), %sp@- \n\t" /* this */ \
++ "jbsr "SYMBOLPREFIX"PrepareAndDispatch\n\t" \
++ "unlk %a6 \n\t" \
+ "rts \n\t" \
+ );
+
diff --git a/firefox-webrtc/xpi.mk b/firefox-webrtc/xpi.mk
new file mode 100644
index 0000000..a3e567f
--- /dev/null
+++ b/firefox-webrtc/xpi.mk
@@ -0,0 +1,25 @@
+# $NetBSD: xpi.mk,v 1.2 2013/08/31 22:15:10 rillig Exp $
+#
+# common logic for repackaging mozilla extensions (.xpi files)
+# Used by the {firefox,seamonkey,thunderbird}-l10n packages.
+
+USE_TOOLS+= unzip pax
+
+post-extract: extract-xpi
+
+.PHONY: extract-xpi
+extract-xpi:
+.for f in ${XPI_FILES}
+ ${RUN} ${MKDIR} ${WRKDIR}/${f:S/.xpi//} && cd ${WRKDIR}/${f:S/.xpi//} && ${UNZIP_CMD} -aqo "${WRKDIR}/${f}"
+.endfor
+
+do-install: install-xpi
+
+.PHONY: install-xpi
+install-xpi:
+.for f in ${XPI_FILES}
+ id=$$(${AWK} '/em:id=/ {sub("^.*em:id=\"", "");sub("\".*$$","");print $$0}' < ${WRKDIR}/${f:S/.xpi//}/install.rdf); \
+ ${MKDIR} ${DESTDIR}${EXTENSIONS_DIR}/$${id} && \
+ cd ${WRKDIR}/${f:S/.xpi//} && \
+ pax -rw . ${DESTDIR}${EXTENSIONS_DIR}/$${id}
+.endfor
Home |
Main Index |
Thread Index |
Old Index