============================================================
Notices for file(s):
emulator
emulator-check
bin64/e2fsck
bin64/fsck.ext4
bin64/mkfs.ext4
bin64/resize2fs
bin64/tune2fs
qemu/darwin-x86_64/qemu-system-aarch64
qemu/darwin-x86_64/qemu-system-armel
qemu/darwin-x86_64/qemu-system-i386
qemu/darwin-x86_64/qemu-system-mips64el
qemu/darwin-x86_64/qemu-system-mipsel
qemu/darwin-x86_64/qemu-system-x86_64
qemu/darwin-x86_64/qemu-upstream-aarch64
qemu/darwin-x86_64/qemu-upstream-armel
qemu/darwin-x86_64/qemu-upstream-i386
qemu/darwin-x86_64/qemu-upstream-mips64el
qemu/darwin-x86_64/qemu-upstream-mipsel
qemu/darwin-x86_64/qemu-upstream-x86_64
qemu/darwin-x86_64/qemu-system-aarch64.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-system-aarch64.dSYM/Contents/Resources/DWARF/qemu-system-aarch64
qemu/darwin-x86_64/qemu-system-armel.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-system-armel.dSYM/Contents/Resources/DWARF/qemu-system-armel
qemu/darwin-x86_64/qemu-system-i386.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-system-i386.dSYM/Contents/Resources/DWARF/qemu-system-i386
qemu/darwin-x86_64/qemu-system-mips64el.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-system-mips64el.dSYM/Contents/Resources/DWARF/qemu-system-mips64el
qemu/darwin-x86_64/qemu-system-mipsel.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-system-mipsel.dSYM/Contents/Resources/DWARF/qemu-system-mipsel
qemu/darwin-x86_64/qemu-system-x86_64.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-system-x86_64.dSYM/Contents/Resources/DWARF/qemu-system-x86_64
qemu/darwin-x86_64/qemu-upstream-aarch64.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-upstream-aarch64.dSYM/Contents/Resources/DWARF/qemu-upstream-aarch64
qemu/darwin-x86_64/qemu-upstream-armel.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-upstream-armel.dSYM/Contents/Resources/DWARF/qemu-upstream-armel
qemu/darwin-x86_64/qemu-upstream-i386.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-upstream-i386.dSYM/Contents/Resources/DWARF/qemu-upstream-i386
qemu/darwin-x86_64/qemu-upstream-mips64el.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-upstream-mips64el.dSYM/Contents/Resources/DWARF/qemu-upstream-mips64el
qemu/darwin-x86_64/qemu-upstream-mipsel.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-upstream-mipsel.dSYM/Contents/Resources/DWARF/qemu-upstream-mipsel
qemu/darwin-x86_64/qemu-upstream-x86_64.dSYM/Contents/Info.plist
qemu/darwin-x86_64/qemu-upstream-x86_64.dSYM/Contents/Resources/DWARF/qemu-upstream-x86_64
lib/advancedFeatures.ini
lib/ca-bundle.pem
lib/pc-bios/bios-256k.bin
lib/pc-bios/bios.bin
lib/pc-bios/efi-virtio.rom
lib/pc-bios/kvmvapic.bin
lib/pc-bios/linuxboot.bin
lib/pc-bios/linuxboot_dma.bin
lib/pc-bios/vgabios-cirrus.bin
lib64/gles_swiftshader/libEGL.dylib
lib64/gles_swiftshader/libGLES_CM.dylib
lib64/gles_swiftshader/libGLESv2.dylib
lib64/lib64EGL_translator.dylib
lib64/lib64GLES12Translator.dylib
lib64/lib64GLES_CM_translator.dylib
lib64/lib64GLES_V2_translator.dylib
lib64/lib64OpenglRender.dylib
lib64/lib64emugl_test_shared_library.dylib
lib64/qt/lib/libQt5Concurrent.5.7.0.dylib
lib64/qt/lib/libQt5Concurrent.5.7.dylib
lib64/qt/lib/libQt5Concurrent.5.dylib
lib64/qt/lib/libQt5Concurrent.dylib
lib64/qt/lib/libQt5Core.5.7.0.dylib
lib64/qt/lib/libQt5Core.5.7.dylib
lib64/qt/lib/libQt5Core.5.dylib
lib64/qt/lib/libQt5Core.dylib
lib64/qt/lib/libQt5DBus.5.7.0.dylib
lib64/qt/lib/libQt5DBus.5.7.dylib
lib64/qt/lib/libQt5DBus.5.dylib
lib64/qt/lib/libQt5DBus.dylib
lib64/qt/lib/libQt5Gui.5.7.0.dylib
lib64/qt/lib/libQt5Gui.5.7.dylib
lib64/qt/lib/libQt5Gui.5.dylib
lib64/qt/lib/libQt5Gui.dylib
lib64/qt/lib/libQt5Network.5.7.0.dylib
lib64/qt/lib/libQt5Network.5.7.dylib
lib64/qt/lib/libQt5Network.5.dylib
lib64/qt/lib/libQt5Network.dylib
lib64/qt/lib/libQt5OpenGL.5.7.0.dylib
lib64/qt/lib/libQt5OpenGL.5.7.dylib
lib64/qt/lib/libQt5OpenGL.5.dylib
lib64/qt/lib/libQt5OpenGL.dylib
lib64/qt/lib/libQt5PrintSupport.5.7.0.dylib
lib64/qt/lib/libQt5PrintSupport.5.7.dylib
lib64/qt/lib/libQt5PrintSupport.5.dylib
lib64/qt/lib/libQt5PrintSupport.dylib
lib64/qt/lib/libQt5Sql.5.7.0.dylib
lib64/qt/lib/libQt5Sql.5.7.dylib
lib64/qt/lib/libQt5Sql.5.dylib
lib64/qt/lib/libQt5Sql.dylib
lib64/qt/lib/libQt5Svg.5.7.0.dylib
lib64/qt/lib/libQt5Svg.5.7.dylib
lib64/qt/lib/libQt5Svg.5.dylib
lib64/qt/lib/libQt5Svg.dylib
lib64/qt/lib/libQt5Test.5.7.0.dylib
lib64/qt/lib/libQt5Test.5.7.dylib
lib64/qt/lib/libQt5Test.5.dylib
lib64/qt/lib/libQt5Test.dylib
lib64/qt/lib/libQt5Widgets.5.7.0.dylib
lib64/qt/lib/libQt5Widgets.5.7.dylib
lib64/qt/lib/libQt5Widgets.5.dylib
lib64/qt/lib/libQt5Widgets.dylib
lib64/qt/lib/libQt5Xml.5.7.0.dylib
lib64/qt/lib/libQt5Xml.5.7.dylib
lib64/qt/lib/libQt5Xml.5.dylib
lib64/qt/lib/libQt5Xml.dylib
lib64/qt/plugins/bearer/libqcorewlanbearer.dylib
lib64/qt/plugins/bearer/libqgenericbearer.dylib
lib64/qt/plugins/generic/libqtuiotouchplugin.dylib
lib64/qt/plugins/iconengines/libqsvgicon.dylib
lib64/qt/plugins/imageformats/libqgif.dylib
lib64/qt/plugins/imageformats/libqico.dylib
lib64/qt/plugins/imageformats/libqjpeg.dylib
lib64/qt/plugins/imageformats/libqsvg.dylib
lib64/qt/plugins/platforms/libqcocoa.dylib
lib64/qt/plugins/platforms/libqminimal.dylib
lib64/qt/plugins/platforms/libqoffscreen.dylib
lib64/qt/plugins/printsupport/libcocoaprintersupport.dylib
lib64/qt/plugins/sqldrivers/libqsqlite.dylib
lib64/gles_swiftshader/libEGL.dylib.dSYM/Contents/Info.plist
lib64/gles_swiftshader/libEGL.dylib.dSYM/Contents/Resources/DWARF/libEGL.dylib
lib64/gles_swiftshader/libGLES_CM.dylib.dSYM/Contents/Info.plist
lib64/gles_swiftshader/libGLES_CM.dylib.dSYM/Contents/Resources/DWARF/libGLES_CM.dylib
lib64/gles_swiftshader/libGLESv2.dylib.dSYM/Contents/Info.plist
lib64/gles_swiftshader/libGLESv2.dylib.dSYM/Contents/Resources/DWARF/libGLESv2.dylib
lib64/lib64EGL_translator.dylib.dSYM/Contents/Info.plist
lib64/lib64EGL_translator.dylib.dSYM/Contents/Resources/DWARF/lib64EGL_translator.dylib
lib64/lib64GLES12Translator.dylib.dSYM/Contents/Info.plist
lib64/lib64GLES12Translator.dylib.dSYM/Contents/Resources/DWARF/lib64GLES12Translator.dylib
lib64/lib64GLES_CM_translator.dylib.dSYM/Contents/Info.plist
lib64/lib64GLES_CM_translator.dylib.dSYM/Contents/Resources/DWARF/lib64GLES_CM_translator.dylib
lib64/lib64GLES_V2_translator.dylib.dSYM/Contents/Info.plist
lib64/lib64GLES_V2_translator.dylib.dSYM/Contents/Resources/DWARF/lib64GLES_V2_translator.dylib
lib64/lib64OpenglRender.dylib.dSYM/Contents/Info.plist
lib64/lib64OpenglRender.dylib.dSYM/Contents/Resources/DWARF/lib64OpenglRender.dylib
lib64/lib64emugl_test_shared_library.dylib.dSYM/Contents/Info.plist
lib64/lib64emugl_test_shared_library.dylib.dSYM/Contents/Resources/DWARF/lib64emugl_test_shared_library.dylib
lib64/qt/lib/libQt5Concurrent.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Concurrent.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5Concurrent.5.7.0.dylib
lib64/qt/lib/libQt5Concurrent.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Concurrent.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5Concurrent.5.7.0.dylib
lib64/qt/lib/libQt5Concurrent.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Concurrent.5.dylib.dSYM/Contents/Resources/DWARF/libQt5Concurrent.5.7.0.dylib
lib64/qt/lib/libQt5Concurrent.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Concurrent.dylib.dSYM/Contents/Resources/DWARF/libQt5Concurrent.5.7.0.dylib
lib64/qt/lib/libQt5Core.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Core.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5Core.5.7.0.dylib
lib64/qt/lib/libQt5Core.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Core.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5Core.5.7.0.dylib
lib64/qt/lib/libQt5Core.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Core.5.dylib.dSYM/Contents/Resources/DWARF/libQt5Core.5.7.0.dylib
lib64/qt/lib/libQt5Core.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Core.dylib.dSYM/Contents/Resources/DWARF/libQt5Core.5.7.0.dylib
lib64/qt/lib/libQt5DBus.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5DBus.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5DBus.5.7.0.dylib
lib64/qt/lib/libQt5DBus.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5DBus.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5DBus.5.7.0.dylib
lib64/qt/lib/libQt5DBus.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5DBus.5.dylib.dSYM/Contents/Resources/DWARF/libQt5DBus.5.7.0.dylib
lib64/qt/lib/libQt5DBus.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5DBus.dylib.dSYM/Contents/Resources/DWARF/libQt5DBus.5.7.0.dylib
lib64/qt/lib/libQt5Gui.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Gui.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5Gui.5.7.0.dylib
lib64/qt/lib/libQt5Gui.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Gui.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5Gui.5.7.0.dylib
lib64/qt/lib/libQt5Gui.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Gui.5.dylib.dSYM/Contents/Resources/DWARF/libQt5Gui.5.7.0.dylib
lib64/qt/lib/libQt5Gui.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Gui.dylib.dSYM/Contents/Resources/DWARF/libQt5Gui.5.7.0.dylib
lib64/qt/lib/libQt5Network.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Network.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5Network.5.7.0.dylib
lib64/qt/lib/libQt5Network.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Network.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5Network.5.7.0.dylib
lib64/qt/lib/libQt5Network.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Network.5.dylib.dSYM/Contents/Resources/DWARF/libQt5Network.5.7.0.dylib
lib64/qt/lib/libQt5Network.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Network.dylib.dSYM/Contents/Resources/DWARF/libQt5Network.5.7.0.dylib
lib64/qt/lib/libQt5OpenGL.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5OpenGL.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5OpenGL.5.7.0.dylib
lib64/qt/lib/libQt5OpenGL.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5OpenGL.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5OpenGL.5.7.0.dylib
lib64/qt/lib/libQt5OpenGL.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5OpenGL.5.dylib.dSYM/Contents/Resources/DWARF/libQt5OpenGL.5.7.0.dylib
lib64/qt/lib/libQt5OpenGL.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5OpenGL.dylib.dSYM/Contents/Resources/DWARF/libQt5OpenGL.5.7.0.dylib
lib64/qt/lib/libQt5PrintSupport.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5PrintSupport.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5PrintSupport.5.7.0.dylib
lib64/qt/lib/libQt5PrintSupport.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5PrintSupport.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5PrintSupport.5.7.0.dylib
lib64/qt/lib/libQt5PrintSupport.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5PrintSupport.5.dylib.dSYM/Contents/Resources/DWARF/libQt5PrintSupport.5.7.0.dylib
lib64/qt/lib/libQt5PrintSupport.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5PrintSupport.dylib.dSYM/Contents/Resources/DWARF/libQt5PrintSupport.5.7.0.dylib
lib64/qt/lib/libQt5Sql.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Sql.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5Sql.5.7.0.dylib
lib64/qt/lib/libQt5Sql.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Sql.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5Sql.5.7.0.dylib
lib64/qt/lib/libQt5Sql.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Sql.5.dylib.dSYM/Contents/Resources/DWARF/libQt5Sql.5.7.0.dylib
lib64/qt/lib/libQt5Sql.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Sql.dylib.dSYM/Contents/Resources/DWARF/libQt5Sql.5.7.0.dylib
lib64/qt/lib/libQt5Svg.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Svg.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5Svg.5.7.0.dylib
lib64/qt/lib/libQt5Svg.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Svg.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5Svg.5.7.0.dylib
lib64/qt/lib/libQt5Svg.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Svg.5.dylib.dSYM/Contents/Resources/DWARF/libQt5Svg.5.7.0.dylib
lib64/qt/lib/libQt5Svg.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Svg.dylib.dSYM/Contents/Resources/DWARF/libQt5Svg.5.7.0.dylib
lib64/qt/lib/libQt5Test.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Test.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5Test.5.7.0.dylib
lib64/qt/lib/libQt5Test.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Test.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5Test.5.7.0.dylib
lib64/qt/lib/libQt5Test.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Test.5.dylib.dSYM/Contents/Resources/DWARF/libQt5Test.5.7.0.dylib
lib64/qt/lib/libQt5Test.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Test.dylib.dSYM/Contents/Resources/DWARF/libQt5Test.5.7.0.dylib
lib64/qt/lib/libQt5Widgets.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Widgets.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5Widgets.5.7.0.dylib
lib64/qt/lib/libQt5Widgets.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Widgets.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5Widgets.5.7.0.dylib
lib64/qt/lib/libQt5Widgets.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Widgets.5.dylib.dSYM/Contents/Resources/DWARF/libQt5Widgets.5.7.0.dylib
lib64/qt/lib/libQt5Widgets.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Widgets.dylib.dSYM/Contents/Resources/DWARF/libQt5Widgets.5.7.0.dylib
lib64/qt/lib/libQt5Xml.5.7.0.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Xml.5.7.0.dylib.dSYM/Contents/Resources/DWARF/libQt5Xml.5.7.0.dylib
lib64/qt/lib/libQt5Xml.5.7.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Xml.5.7.dylib.dSYM/Contents/Resources/DWARF/libQt5Xml.5.7.0.dylib
lib64/qt/lib/libQt5Xml.5.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Xml.5.dylib.dSYM/Contents/Resources/DWARF/libQt5Xml.5.7.0.dylib
lib64/qt/lib/libQt5Xml.dylib.dSYM/Contents/Info.plist
lib64/qt/lib/libQt5Xml.dylib.dSYM/Contents/Resources/DWARF/libQt5Xml.5.7.0.dylib
lib64/qt/plugins/bearer/libqcorewlanbearer.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/bearer/libqcorewlanbearer.dylib.dSYM/Contents/Resources/DWARF/libqcorewlanbearer.dylib
lib64/qt/plugins/bearer/libqgenericbearer.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/bearer/libqgenericbearer.dylib.dSYM/Contents/Resources/DWARF/libqgenericbearer.dylib
lib64/qt/plugins/generic/libqtuiotouchplugin.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/generic/libqtuiotouchplugin.dylib.dSYM/Contents/Resources/DWARF/libqtuiotouchplugin.dylib
lib64/qt/plugins/iconengines/libqsvgicon.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/iconengines/libqsvgicon.dylib.dSYM/Contents/Resources/DWARF/libqsvgicon.dylib
lib64/qt/plugins/imageformats/libqgif.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/imageformats/libqgif.dylib.dSYM/Contents/Resources/DWARF/libqgif.dylib
lib64/qt/plugins/imageformats/libqico.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/imageformats/libqico.dylib.dSYM/Contents/Resources/DWARF/libqico.dylib
lib64/qt/plugins/imageformats/libqjpeg.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/imageformats/libqjpeg.dylib.dSYM/Contents/Resources/DWARF/libqjpeg.dylib
lib64/qt/plugins/imageformats/libqsvg.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/imageformats/libqsvg.dylib.dSYM/Contents/Resources/DWARF/libqsvg.dylib
lib64/qt/plugins/platforms/libqcocoa.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/platforms/libqcocoa.dylib.dSYM/Contents/Resources/DWARF/libqcocoa.dylib
lib64/qt/plugins/platforms/libqminimal.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/platforms/libqminimal.dylib.dSYM/Contents/Resources/DWARF/libqminimal.dylib
lib64/qt/plugins/platforms/libqoffscreen.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/platforms/libqoffscreen.dylib.dSYM/Contents/Resources/DWARF/libqoffscreen.dylib
lib64/qt/plugins/printsupport/libcocoaprintersupport.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/printsupport/libcocoaprintersupport.dylib.dSYM/Contents/Resources/DWARF/libcocoaprintersupport.dylib
lib64/qt/plugins/sqldrivers/libqsqlite.dylib.dSYM/Contents/Info.plist
lib64/qt/plugins/sqldrivers/libqsqlite.dylib.dSYM/Contents/Resources/DWARF/libqsqlite.dylib
resources/resources.rcc
lib/pc-bios/bios.bin
lib/pc-bios/vgabios-cirrus.bin
emulator64-arm
emulator64-mips
emulator64-x86
emulator64-crash-service
emulator.dSYM/Contents/Info.plist
emulator.dSYM/Contents/Resources/DWARF/emulator
emulator-check.dSYM/Contents/Info.plist
emulator-check.dSYM/Contents/Resources/DWARF/emulator-check
emulator64-arm.dSYM/Contents/Info.plist
emulator64-arm.dSYM/Contents/Resources/DWARF/emulator64-arm
emulator64-mips.dSYM/Contents/Info.plist
emulator64-mips.dSYM/Contents/Resources/DWARF/emulator64-mips
emulator64-x86.dSYM/Contents/Info.plist
emulator64-x86.dSYM/Contents/Resources/DWARF/emulator64-x86
emulator64-crash-service.dSYM/Contents/Info.plist
emulator64-crash-service.dSYM/Contents/Resources/DWARF/emulator64-crash-service
------------------------------------------------------------
		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                          675 Mass Ave, Cambridge, MA 02139, USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

			    NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

		     END OF TERMS AND CONDITIONS

	    How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) 19yy  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) 19yy name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Library General
Public License instead of this License.

============================================================
Notices for file(s):
mksdcard
------------------------------------------------------------

   Copyright (c) 2005-2014, The Android Open Source Project

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

